Skip to content

Commit cac7fbd

Browse files
committed
Fix CI/CD pipeline errors: version format handling, PyPI upload path validation, macOS icon check
1 parent ef7cdbb commit cac7fbd

2 files changed

Lines changed: 58 additions & 15 deletions

File tree

.github/workflows/build-and-release.yml

Lines changed: 52 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -79,10 +79,23 @@ jobs:
7979
run: |
8080
pyinstaller --onefile --name telegram-multi-account-sender --hidden-import=PyQt5 --hidden-import=PyQt5.QtCore --hidden-import=PyQt5.QtGui --hidden-import=PyQt5.QtWidgets --hidden-import=telethon --hidden-import=sqlmodel --hidden-import=pydantic main.py
8181
82+
- name: Set version for Linux build
83+
id: set_version_linux
84+
run: |
85+
if [ "${{ github.event_name }}" == "workflow_dispatch" ]; then
86+
VERSION="${{ inputs.version }}"
87+
if [[ ! "$VERSION" =~ ^v ]]; then
88+
VERSION="v$VERSION"
89+
fi
90+
else
91+
VERSION="${{ github.ref_name }}"
92+
fi
93+
echo "version=$VERSION" >> $GITHUB_OUTPUT
94+
8295
- name: Create .tar.gz
8396
if: success()
8497
run: |
85-
tar -czf telegram-multi-account-sender-${{ github.ref_name || inputs.version }}-linux.tar.gz dist/telegram-multi-account-sender || true
98+
tar -czf telegram-multi-account-sender-${{ steps.set_version_linux.outputs.version }}-linux.tar.gz dist/telegram-multi-account-sender || true
8699
87100
- name: Upload Linux artifacts
88101
if: success() || failure()
@@ -116,17 +129,34 @@ jobs:
116129
- name: Build macOS application
117130
continue-on-error: true
118131
run: |
119-
pyinstaller --windowed --name telegram-multi-account-sender --icon=assets/icons/favicon.ico main.py || pyinstaller --onefile --name telegram-multi-account-sender main.py
132+
if [ -f "assets/icons/favicon.ico" ]; then
133+
pyinstaller --windowed --name telegram-multi-account-sender --icon=assets/icons/favicon.ico main.py || pyinstaller --onefile --name telegram-multi-account-sender main.py
134+
else
135+
pyinstaller --windowed --name telegram-multi-account-sender main.py || pyinstaller --onefile --name telegram-multi-account-sender main.py
136+
fi
137+
138+
- name: Set version for macOS build
139+
id: set_version_macos
140+
run: |
141+
if [ "${{ github.event_name }}" == "workflow_dispatch" ]; then
142+
VERSION="${{ inputs.version }}"
143+
if [[ ! "$VERSION" =~ ^v ]]; then
144+
VERSION="v$VERSION"
145+
fi
146+
else
147+
VERSION="${{ github.ref_name }}"
148+
fi
149+
echo "version=$VERSION" >> $GITHUB_OUTPUT
120150
121151
- name: Create .dmg
122152
if: success()
123153
run: |
124154
if [ -d "dist/telegram-multi-account-sender.app" ]; then
125-
hdiutil create -srcfolder dist/telegram-multi-account-sender.app -volname "Telegram Multi-Account Message Sender" -fs HFS+ -format UDZO telegram-multi-account-sender-${{ github.ref_name || inputs.version }}-macOS.dmg || true
155+
hdiutil create -srcfolder dist/telegram-multi-account-sender.app -volname "Telegram Multi-Account Message Sender" -fs HFS+ -format UDZO telegram-multi-account-sender-${{ steps.set_version_macos.outputs.version }}-macOS.dmg || true
126156
elif [ -f "dist/telegram-multi-account-sender" ]; then
127157
mkdir -p dist/Telegram-Multi-Account-Sender.app/Contents/MacOS
128158
cp dist/telegram-multi-account-sender dist/Telegram-Multi-Account-Sender.app/Contents/MacOS/
129-
hdiutil create -srcfolder dist/Telegram-Multi-Account-Sender.app -volname "Telegram Multi-Account Message Sender" -fs HFS+ -format UDZO telegram-multi-account-sender-${{ github.ref_name || inputs.version }}-macOS.dmg || true
159+
hdiutil create -srcfolder dist/Telegram-Multi-Account-Sender.app -volname "Telegram Multi-Account Message Sender" -fs HFS+ -format UDZO telegram-multi-account-sender-${{ steps.set_version_macos.outputs.version }}-macOS.dmg || true
130160
fi
131161
132162
- name: Upload macOS artifacts
@@ -181,16 +211,29 @@ jobs:
181211
- name: Checkout code
182212
uses: actions/checkout@v4
183213

214+
- name: Set release version
215+
id: set_version
216+
run: |
217+
if [ "${{ github.event_name }}" == "workflow_dispatch" ]; then
218+
VERSION="${{ inputs.version }}"
219+
if [[ ! "$VERSION" =~ ^v ]]; then
220+
VERSION="v$VERSION"
221+
fi
222+
else
223+
VERSION="${{ github.ref_name }}"
224+
fi
225+
echo "version=$VERSION" >> $GITHUB_OUTPUT
226+
184227
- name: Download all artifacts
185228
uses: actions/download-artifact@v4
186229

187230
- name: Create Release
188231
uses: softprops/action-gh-release@v2
189232
with:
190-
tag_name: ${{ github.ref_name || inputs.version }}
191-
name: Release ${{ github.ref_name || inputs.version }}
233+
tag_name: ${{ steps.set_version.outputs.version }}
234+
name: Release ${{ steps.set_version.outputs.version }}
192235
body: |
193-
## 🎉 Release ${{ github.ref_name || inputs.version }}
236+
## 🎉 Release ${{ steps.set_version.outputs.version }}
194237
195238
### 📦 Downloads
196239
@@ -199,11 +242,11 @@ jobs:
199242
200243
**Linux:**
201244
- `telegram-multi-account-sender` - Standalone executable
202-
- `telegram-multi-account-sender-${{ github.ref_name || inputs.version }}-linux.tar.gz` - Source distribution
245+
- `telegram-multi-account-sender-${{ steps.set_version.outputs.version }}-linux.tar.gz` - Source distribution
203246
204247
**macOS:**
205248
- `telegram-multi-account-sender` - Standalone executable
206-
- `telegram-multi-account-sender-${{ github.ref_name || inputs.version }}-macOS.dmg` - Disk image installer
249+
- `telegram-multi-account-sender-${{ steps.set_version.outputs.version }}-macOS.dmg` - Disk image installer
207250
208251
### 🚀 Installation
209252

.github/workflows/release.yml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -64,14 +64,14 @@ jobs:
6464
run: |
6565
python -m build
6666
67-
- name: Download all artifacts
68-
uses: actions/download-artifact@v4
69-
with:
70-
path: artifacts/
71-
7267
- name: Publish to PyPI
7368
env:
7469
TWINE_USERNAME: __token__
7570
TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
7671
run: |
77-
twine upload dist/* || echo "PyPI upload skipped (no token or already exists)"
72+
if [ -d "dist" ] && [ "$(ls -A dist/*.whl dist/*.tar.gz 2>/dev/null)" ]; then
73+
twine upload dist/* || echo "PyPI upload skipped (no token or already exists)"
74+
else
75+
echo "No distribution files found in dist/"
76+
exit 1
77+
fi

0 commit comments

Comments
 (0)