1717jobs :
1818
1919 # ── Shared Flutter + pub setup (Ubuntu) ───────────────────────────────────
20- # build-android and build-linux both run on ubuntu-latest and share this cache.
20+ # build-android runs on ubuntu-latest and uses this cache.
2121 prepare-ubuntu :
2222 name : Flutter setup (ubuntu)
2323 runs-on : ubuntu-latest
4040 - run : flutter pub get
4141
4242 # ── Shared Flutter + pub setup (macOS) ────────────────────────────────────
43- # build-ios and build-macos both run on macos-latest and share this cache.
43+ # build-ios runs on macos-latest and uses this cache.
4444 prepare-macos :
4545 name : Flutter setup (macos)
4646 runs-on : macos-latest
@@ -106,107 +106,6 @@ jobs:
106106 build/app/outputs/flutter-apk/app-arm64-v8a-release.apk
107107 build/app/outputs/flutter-apk/app-x86_64-release.apk
108108
109- # ── Windows ───────────────────────────────────────────────────────────────
110- # Only one Windows job — no separate prepare step needed; cache inline.
111- build-windows :
112- name : Build Windows
113- runs-on : windows-latest
114-
115- steps :
116- - name : Checkout code
117- uses : actions/checkout@v4
118-
119- - name : Setup Flutter
120- uses : subosito/flutter-action@v2
121- with :
122- channel : ' stable'
123- cache : true
124-
125- - name : Cache pub packages
126- uses : actions/cache@v4
127- with :
128- path : ${{ env.PUB_CACHE }}
129- key : pub-windows-${{ hashFiles('pubspec.lock') }}
130- restore-keys : pub-windows-
131-
132- - name : Get dependencies
133- run : flutter pub get
134-
135- - name : Build Windows
136- run : flutter build windows --release
137-
138- - name : Get version
139- id : version
140- shell : bash
141- run : |
142- if [ "${{ github.event_name }}" == "workflow_dispatch" ]; then
143- echo "VERSION=${{ github.event.inputs.version }}" >> $GITHUB_OUTPUT
144- else
145- echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_OUTPUT
146- fi
147-
148- - name : Install NSIS
149- run : choco install nsis --yes
150-
151- - name : Build Windows Installer
152- run : |
153- & "C:\Program Files (x86)\NSIS\makensis.exe" /DMUSLY_VERSION=${{ steps.version.outputs.VERSION }} installer.nsi
154- Get-Item musly-*-setup.exe | Rename-Item -NewName "musly-windows-setup.exe"
155-
156- - name : Upload Windows artifact
157- uses : actions/upload-artifact@v4
158- with :
159- name : windows-build
160- path : musly-windows-setup.exe
161-
162- # ── Linux ─────────────────────────────────────────────────────────────────
163- build-linux :
164- name : Build Linux
165- runs-on : ubuntu-latest
166- needs : prepare-ubuntu
167-
168- steps :
169- - name : Checkout code
170- uses : actions/checkout@v4
171-
172- - name : Install system dependencies
173- run : |
174- sudo apt-get update
175- sudo apt-get install -y \
176- clang cmake ninja-build pkg-config \
177- libgtk-3-dev liblzma-dev libglib2.0-dev \
178- libmpv-dev mpv
179-
180- - name : Setup Flutter
181- uses : subosito/flutter-action@v2
182- with :
183- channel : ' stable'
184- cache : true
185-
186- - name : Restore pub cache
187- uses : actions/cache/restore@v4
188- with :
189- path : ~/.pub-cache
190- key : pub-ubuntu-${{ hashFiles('pubspec.lock') }}
191- restore-keys : pub-ubuntu-
192-
193- - name : Get dependencies
194- run : flutter pub get
195-
196- - name : Build Linux
197- run : flutter build linux --release
198-
199- - name : Package Linux Build
200- run : |
201- cd build/linux/x64/release/bundle
202- tar -czf ../../../../../musly-linux-x64.tar.gz *
203-
204- - name : Upload Linux artifact
205- uses : actions/upload-artifact@v4
206- with :
207- name : linux-build
208- path : musly-linux-x64.tar.gz
209-
210109 # ── iOS ───────────────────────────────────────────────────────────────────
211110 build-ios :
212111 name : Build iOS IPA
@@ -254,72 +153,9 @@ jobs:
254153 name : ios-build
255154 path : musly-ios.ipa
256155
257- # ── macOS ─────────────────────────────────────────────────────────────────
258- build-macos :
259- name : Build macOS
260- runs-on : macos-latest
261- needs : prepare-macos
262-
263- steps :
264- - name : Checkout code
265- uses : actions/checkout@v4
266-
267- - name : Setup Flutter
268- uses : subosito/flutter-action@v2
269- with :
270- channel : ' stable'
271- cache : true
272-
273- - name : Restore pub cache
274- uses : actions/cache/restore@v4
275- with :
276- path : ~/.pub-cache
277- key : pub-macos-${{ hashFiles('pubspec.lock') }}
278- restore-keys : pub-macos-
279-
280- - name : Get dependencies
281- run : flutter pub get
282-
283- - name : Install CocoaPods dependencies
284- run : |
285- cd macos
286- pod install --repo-update
287-
288- - name : Build macOS
289- run : flutter build macos --release
290-
291- - name : Get version
292- id : version
293- run : |
294- if [ "${{ github.event_name }}" == "workflow_dispatch" ]; then
295- echo "VERSION=${{ github.event.inputs.version }}" >> $GITHUB_OUTPUT
296- else
297- echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_OUTPUT
298- fi
299-
300- - name : Package DMG
301- run : |
302- brew install create-dmg
303- create-dmg \
304- --volname "Musly ${{ steps.version.outputs.VERSION }}" \
305- --window-pos 200 120 \
306- --window-size 800 400 \
307- --icon-size 100 \
308- --icon "Musly.app" 200 190 \
309- --hide-extension "Musly.app" \
310- --app-drop-link 600 185 \
311- "musly-macos.dmg" \
312- "build/macos/Build/Products/Release/"
313-
314- - name : Upload macOS artifact
315- uses : actions/upload-artifact@v4
316- with :
317- name : macos-build
318- path : musly-macos.dmg
319-
320156 create-release :
321157 name : Create GitHub Release
322- needs : [build-android, build-windows, build-linux, build- ios, build-macos ]
158+ needs : [build-android, build-ios]
323159 runs-on : ubuntu-latest
324160 permissions :
325161 contents : write
@@ -360,15 +196,6 @@ jobs:
360196 **iOS:**
361197 - `musly-ios.ipa` (sideload with AltStore, Sideloadly, or similar — not signed)
362198
363- **Windows:**
364- - `musly-windows-setup.exe` (setup installer, run to install Musly)
365-
366- **macOS:**
367- - `musly-macos.dmg` (drag Musly.app to Applications — not notarized)
368-
369- **Linux:**
370- - `musly-linux-x64.tar.gz` (extract and run musly)
371-
372199 ### 📝 Changelog
373200 See [CHANGELOG.md](https://github.com/dddevid/Musly/blob/master/CHANGELOG.md)
374201
@@ -379,8 +206,5 @@ jobs:
379206 files : |
380207 artifacts/android-apk/*.apk
381208 artifacts/ios-build/*.ipa
382- artifacts/windows-build/*.exe
383- artifacts/macos-build/*.dmg
384- artifacts/linux-build/*.tar.gz
385209 env :
386210 GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
0 commit comments