@@ -154,7 +154,17 @@ jobs:
154154 path : |
155155 app/linwood-setonix-windows-setup-x86_64.exe
156156 build-linux :
157- runs-on : ubuntu-24.04
157+ strategy :
158+ fail-fast : false
159+ matrix :
160+ arch :
161+ - image : ubuntu-24.04
162+ name : x86_64
163+ dir : x64
164+ - image : ubuntu-24.04-arm
165+ name : arm64
166+ dir : arm64
167+ runs-on : ${{ matrix.arch.image }}
158168 defaults :
159169 run :
160170 working-directory : app
@@ -188,6 +198,10 @@ jobs:
188198 - uses : subosito/flutter-action@v2.18.0
189199 with :
190200 flutter-version-file : app/pubspec.yaml
201+ channel : ' master'
202+ cache : true
203+ cache-key : ' flutter-:os:-:channel:-:version:-:arch:-:hash:'
204+ cache-path : ' ${{ runner.tool_cache }}/flutter/:channel:-:version:-:arch:'
191205 - name : ✅ Enable platforms
192206 run : flutter config --enable-linux-desktop
193207 - name : 📦 Get dependencies
@@ -214,64 +228,77 @@ jobs:
214228 flutter build linux -v --release --dart-define=flavor=production
215229 - name : 🏭 Make binary executable
216230 run : |
217- chmod +x build/linux/x64 /release/bundle/setonix
231+ chmod +x build/linux/${{ matrix.arch.dir }} /release/bundle/setonix
218232 - name : Build .deb executable
219233 run : |
220- cp -fr build/linux/x64 /release/bundle linux/debian/usr/bin
234+ cp -fr build/linux/${{ matrix.arch.dir }} /release/bundle linux/debian/usr/bin
221235 dpkg-deb --build --root-owner-group linux/debian
222- cp linux/*.deb linwood-setonix-linux-x86_64 .deb
236+ cp linux/*.deb linwood-setonix-linux-${{ matrix.arch.name }} .deb
223237 - name : Build .rpm executable
224238 run : |
225- bash scripts/build-rpm.sh
239+ bash scripts/build-rpm.sh -d ${{ matrix.arch.dir }} -b ${{ matrix.arch.name }}
226240 - name : Build .AppImage executable
241+ if : ${{ matrix.arch.name == 'x86_64' }}
227242 run : |
228- wget -O appimage-builder-x86_64 .AppImage https://github.com/AppImageCrafters/appimage-builder/releases/download/v1.1.0/appimage-builder-1.1.0-x86_64.AppImage
229- chmod +x appimage-builder-x86_64 .AppImage
230- sudo mv appimage-builder-x86_64 .AppImage /usr/local/bin/appimage-builder
243+ wget -O appimage-builder.AppImage https://github.com/AppImageCrafters/appimage-builder/releases/download/v1.1.0/appimage-builder-1.1.0-x86_64.AppImage
244+ chmod +x appimage-builder.AppImage
245+ sudo mv appimage-builder.AppImage /usr/local/bin/appimage-builder
231246 appimage-builder --recipe AppImageBuilder.yml --skip-test
232247 - name : Copy nessessary files
233248 run : |
234- cp assets/images/logo.svg build/linux/x64 /release/bundle/dev.linwood.setonix.svg
235- mkdir -p build/linux/x64 /release/bundle/usr/share
236- cp -r linux/debian/usr/share build/linux/x64 /release/bundle/usr
249+ cp assets/images/logo.svg build/linux/${{ matrix.arch.dir }} /release/bundle/dev.linwood.setonix.svg
250+ mkdir -p build/linux/${{ matrix.arch.dir }} /release/bundle/usr/share
251+ cp -r linux/debian/usr/share build/linux/${{ matrix.arch.dir }} /release/bundle/usr
237252 - name : Rename AppImage
253+ if : ${{ matrix.arch.name == 'x86_64' }}
238254 run : |
239255 ls
240- mv ./*.AppImage linwood-setonix-linux-x86_64 .AppImage
256+ mv ./*.AppImage linwood-setonix-linux-${{ matrix.arch.name }} .AppImage
241257 - name : Copy portable start script
242258 run : |
243259 chmod +x scripts/start.sh
244- cp scripts/start.sh build/linux/x64 /release/bundle
260+ cp scripts/start.sh build/linux/${{ matrix.arch.dir }} /release/bundle
245261 - name : Archive
246262 uses : actions/upload-artifact@v4
247263 with :
248- name : linux-build
264+ name : linux-${{ matrix.arch.name }}- build
249265 path : |
250- app/build/linux/x64 /release/bundle/**
266+ app/build/linux/${{ matrix.arch.dir }} /release/bundle/**
251267 - name : Archive .deb
252268 uses : actions/upload-artifact@v4
253269 with :
254- name : linux-deb
270+ name : linux-${{ matrix.arch.name }}- deb
255271 path : |
256- app/linwood-setonix-linux-x86_64 .deb
272+ app/linwood-setonix-linux-${{ matrix.arch.name }} .deb
257273 - name : Archive .rpm
258274 uses : actions/upload-artifact@v4
259275 with :
260- name : linux-rpm
276+ name : linux-${{ matrix.arch.name }}- rpm
261277 path : |
262- app/build/linwood-setonix-linux-x86_64 .rpm
278+ app/build/linwood-setonix-linux-${{ matrix.arch.name }} .rpm
263279 - name : Archive .AppImage
264280 uses : actions/upload-artifact@v4
281+ if : ${{ matrix.arch.name == 'x86_64' }}
265282 with :
266- name : linux-appimage
283+ name : linux-x86_64- appimage
267284 path : |
268285 app/linwood-setonix-linux-x86_64.AppImage
269286 build-flatpak :
270287 name : build-flatpak
271- runs-on : ubuntu-22.04
272288 defaults :
273289 run :
274290 working-directory : app
291+ strategy :
292+ fail-fast : false
293+ matrix :
294+ arch :
295+ - image : ubuntu-22.04
296+ name : x86_64
297+ dir : x64
298+ - image : ubuntu-22.04-arm
299+ name : arm64
300+ dir : arm64
301+ runs-on : ${{ matrix.arch.image }}
275302 steps :
276303 - name : ⬆️ Checkout
277304 uses : actions/checkout@v4
@@ -301,6 +328,10 @@ jobs:
301328 - uses : subosito/flutter-action@v2.18.0
302329 with :
303330 flutter-version-file : app/pubspec.yaml
331+ channel : ' master'
332+ cache : true
333+ cache-key : ' flutter-:os:-:channel:-:version:-:arch:-:hash:'
334+ cache-path : ' ${{ runner.tool_cache }}/flutter/:channel:-:version:-:arch:'
304335 - name : ✅ Enable platforms
305336 run : flutter config --enable-linux-desktop
306337 - name : 📦 Get dependencies
@@ -327,11 +358,11 @@ jobs:
327358 flutter build linux -v --release --dart-define=flavor=production
328359 - name : Copy nessessary files
329360 run : |
330- cp assets/images/logo.svg build/linux/x64 /release/bundle/dev.linwood.setonix.svg
331- mkdir -p build/linux/x64 /release/bundle/usr/share
332- cp -r linux/debian/usr/share build/linux/x64 /release/bundle/usr
361+ cp assets/images/logo.svg build/linux/${{ matrix.arch.dir }} /release/bundle/dev.linwood.setonix.svg
362+ mkdir -p build/linux/${{ matrix.arch.dir }} /release/bundle/usr/share
363+ cp -r linux/debian/usr/share build/linux/${{ matrix.arch.dir }} /release/bundle/usr
333364 - name : Compress Flutter build
334- run : tar -C build/linux/x64 /release/bundle -czf linwood-setonix-linux-portable-x86_64 .tar.gz .
365+ run : tar -C build/linux/${{ matrix.arch.dir }} /release/bundle -czf linwood-setonix-linux-portable-${{ matrix.arch.name }} .tar.gz .
335366 # - name: Install flatpak
336367 # run: |
337368 # sudo apt-get update
@@ -354,8 +385,8 @@ jobs:
354385 - name : Archive old portable
355386 uses : actions/upload-artifact@v4
356387 with :
357- name : linux-alternative-portable
358- path : app/build/linux/x64 /release/bundle
388+ name : linux-${{ matrix.arch.name }}- alternative-build
389+ path : app/build/linux/${{ matrix.arch.dir }} /release/bundle
359390 build-macos :
360391 runs-on : macos-latest
361392 defaults :
@@ -485,9 +516,11 @@ jobs:
485516 matrix :
486517 os :
487518 - name : ubuntu-24.04
488- label : linux
519+ label : linux-x86_64
520+ - name : ubuntu-24.04-arm
521+ label : linux-arm64
489522 - name : windows-2022
490- label : windows
523+ label : windows-x86_64
491524 - name : macos-latest
492525 label : macos
493526 runs-on : ${{ matrix.os.name }}
@@ -578,21 +611,35 @@ jobs:
578611 path : windows-build/
579612 - uses : actions/download-artifact@v4
580613 with :
581- name : linux-build
582- path : linux-build/
614+ name : linux-x86_64-build
615+ path : linux-x86_64-build/
616+ - uses : actions/download-artifact@v4
617+ with :
618+ name : linux-x86_64-deb
619+ - uses : actions/download-artifact@v4
620+ with :
621+ name : linux-x86_64-rpm
622+ - uses : actions/download-artifact@v4
623+ with :
624+ name : linux-x86_64-appimage
583625 - uses : actions/download-artifact@v4
584626 with :
585- name : linux-deb
627+ name : linux-x86_64-alternative-build
628+ path : linux-x86_64-alternative-build/
586629 - uses : actions/download-artifact@v4
587630 with :
588- name : linux-rpm
631+ name : linux-arm64-build
632+ path : linux-arm64-build/
589633 - uses : actions/download-artifact@v4
590634 with :
591- name : linux-appimage
635+ name : linux-arm64-deb
592636 - uses : actions/download-artifact@v4
593637 with :
594- name : linux-alternative-portable
595- path : linux-alternative-portable/
638+ name : linux-arm64-rpm
639+ - uses : actions/download-artifact@v4
640+ with :
641+ name : linux-arm64-alternative-build
642+ path : linux-arm64-alternative-build/
596643 - uses : actions/download-artifact@v4
597644 with :
598645 name : windows-setup
@@ -607,23 +654,30 @@ jobs:
607654 name : ipa-build
608655 - uses : actions/download-artifact@v4
609656 with :
610- name : server-build-linux
611- path : server-build-linux/
657+ name : server-build-linux-x86_64
658+ path : server-build-linux-x86_64/
659+ - uses : actions/download-artifact@v4
660+ with :
661+ name : server-build-linux-arm64
662+ path : server-build-linux-arm64/
612663 - uses : actions/download-artifact@v4
613664 with :
614- name : server-build-windows
615- path : server-build-windows/
665+ name : server-build-windows-x86_64
666+ path : server-build-windows-x86_64 /
616667 - uses : actions/download-artifact@v4
617668 with :
618669 name : server-build-macos
619670 path : server-build-macos/
620671 - name : 📦 Zip artifacts
621672 run : |
622673 zip -r linwood-setonix-windows-x86_64.zip windows-build/*
623- tar -C linux-build -czf linwood-setonix-linux-x86_64.tar.gz .
624- tar -C linux-alternative-portable -czf linwood-setonix-linux-alternative-x86_64.tar.gz .
625- zip -r linwood-setonix-server-windows-x86_64.zip server-build-windows/*
626- tar -C server-build-linux -czf linwood-setonix-server-linux-x86_64.tar.gz .
674+ tar -C linux-x86_64-build -czf linwood-setonix-linux-x86_64.tar.gz .
675+ tar -C linux-arm64-build -czf linwood-setonix-linux-arm64.tar.gz .
676+ zip -r linwood-setonix-server-windows-x86_64.zip server-build-windows-x86_64/*
677+ tar -C linux-x86_64-alternative-build -czf linwood-setonix-linux-alternative-x86_64.tar.gz .
678+ tar -C linux-arm64-alternative-build -czf linwood-setonix-linux-alternative-arm64.tar.gz .
679+ tar -C server-build-linux-x86_64 -czf linwood-setonix-server-linux-x86_64.tar.gz .
680+ tar -C server-build-linux-arm64 -czf linwood-setonix-server-linux-arm64.tar.gz .
627681 zip -r linwood-setonix-server-macos.zip server-build-macos/*
628682 - name : Configure git
629683 if : ${{ github.ref == 'refs/heads/develop' || github.ref == 'refs/heads/main' }}
@@ -632,6 +686,23 @@ jobs:
632686 git config --global user.email "actions@github.com"
633687 git config --global user.name "Actions"
634688 git pull --tags
689+ - name : Add checksums
690+ run : |
691+ output_file="checksums.txt"
692+
693+ # Empty the output file if it exists
694+ > "$output_file"
695+
696+ # Find and loop through all files starting with "linwood-setonix" in the current directory
697+ for file in linwood-setonix*; do
698+ # Check if the file exists (in case no matches were found)
699+ if [ -f "$file" ]; then
700+ # Append sha256sum to the output file in the format "hash filename"
701+ sha256sum "$file" >> "$output_file"
702+ fi
703+ done
704+
705+ echo "SHA256 hashes for files starting with 'linwood-setonix' saved to $output_file"
635706 - name : 🚀 Deploy stable
636707 if : ${{ github.ref == 'refs/tags/stable' || (github.event_name == 'release' && !github.event.release.prerelease) }}
637708 uses : softprops/action-gh-release@v2
@@ -647,13 +718,22 @@ jobs:
647718 linwood-setonix-linux-x86_64.deb
648719 linwood-setonix-linux-x86_64.rpm
649720 linwood-setonix-linux-x86_64.AppImage
721+ linwood-setonix-linux-arm64.tar.gz
722+ linwood-setonix-linux-alternative-arm64.tar.gz
723+ linwood-setonix-linux-arm64.deb
724+ linwood-setonix-linux-arm64.rpm
650725 linwood-setonix-macos.zip
651726 linwood-setonix-macos.dmg
652727 linwood-setonix-android.apk
728+ linwood-setonix-android-arm.apk
729+ linwood-setonix-android-arm64.apk
730+ linwood-setonix-android-x86_64.apk
653731 linwood-setonix-ios.ipa
654732 linwood-setonix-server-linux-x86_64.tar.gz
733+ linwood-setonix-server-linux-arm64.tar.gz
655734 linwood-setonix-server-windows-x86_64.zip
656735 linwood-setonix-server-macos.zip
736+ checksums.txt
657737 env :
658738 GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
659739 - name : 🚀 Deploy nightly
@@ -671,6 +751,10 @@ jobs:
671751 linwood-setonix-linux-x86_64.deb
672752 linwood-setonix-linux-x86_64.rpm
673753 linwood-setonix-linux-x86_64.AppImage
754+ linwood-setonix-linux-arm64.tar.gz
755+ linwood-setonix-linux-alternative-arm64.tar.gz
756+ linwood-setonix-linux-arm64.deb
757+ linwood-setonix-linux-arm64.rpm
674758 linwood-setonix-macos.zip
675759 linwood-setonix-macos.dmg
676760 linwood-setonix-android.apk
@@ -679,8 +763,10 @@ jobs:
679763 linwood-setonix-android-x86_64.apk
680764 linwood-setonix-ios.ipa
681765 linwood-setonix-server-linux-x86_64.tar.gz
766+ linwood-setonix-server-linux-arm64.tar.gz
682767 linwood-setonix-server-windows-x86_64.zip
683768 linwood-setonix-server-macos.zip
769+ checksums.txt
684770 env :
685771 GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
686772 - name : Release
@@ -696,6 +782,10 @@ jobs:
696782 linwood-setonix-linux-x86_64.deb
697783 linwood-setonix-linux-x86_64.rpm
698784 linwood-setonix-linux-x86_64.AppImage
785+ linwood-setonix-linux-arm64.tar.gz
786+ linwood-setonix-linux-alternative-arm64.tar.gz
787+ linwood-setonix-linux-arm64.deb
788+ linwood-setonix-linux-arm64.rpm
699789 linwood-setonix-macos.zip
700790 linwood-setonix-macos.dmg
701791 linwood-setonix-android.apk
@@ -704,8 +794,10 @@ jobs:
704794 linwood-setonix-android-x86_64.apk
705795 linwood-setonix-ios.ipa
706796 linwood-setonix-server-linux-x86_64.tar.gz
797+ linwood-setonix-server-linux-arm64.tar.gz
707798 linwood-setonix-server-windows-x86_64.zip
708799 linwood-setonix-server-macos.zip
800+ checksums.txt
709801 env :
710802 GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
711803 deploy-to-play-store :
@@ -757,7 +849,7 @@ jobs:
757849 - name : Setup Fastlane
758850 uses : ruby/setup-ruby@v1
759851 with :
760- ruby-version : " 3.3.5 "
852+ ruby-version : " 3.3.6 "
761853 bundler-cache : true
762854 working-directory : app/android
763855 - name : 🚀 Deploy to Play Store
0 commit comments