Skip to content

ci: add Windows exe #18

ci: add Windows exe

ci: add Windows exe #18

name: cross-platform_build
on:
push:
branches:
- main
env:
APP_NAME: subterfuge
jobs:
macos-silicon:
runs-on: macos-15
steps:
- uses: actions/checkout@v5
- name: Install FVM
run: |
curl -fsSL https://fvm.app/install.sh | bash
echo "$HOME/fvm/bin" >> $GITHUB_PATH
- run: fvm install
- run: fvm flutter pub get
- run: fvm dart run build_runner build --delete-conflicting-outputs
- run: fvm flutter precache --macos
- run: cd macos && pod install --repo-update && cd -
- run: fvm flutter config --enable-macos-desktop
- run: fvm flutter build macos --release
- name: Install create-dmg
run: brew install create-dmg
- name: Create DMG
run: |
create-dmg \
--volname "Subterfuge" \
--window-pos 200 120 \
--window-size 800 400 \
--icon-size 100 \
--icon "${{ env.APP_NAME }}.app" 200 190 \
--hide-extension "${{ env.APP_NAME }}.app" \
--app-drop-link 600 185 \
"Subterfuge-1.2.0-silicon.dmg" \
"build/macos/Build/Products/Release/${{ env.APP_NAME }}.app"
- name: Upload macOS Silicon DMG
uses: actions/upload-artifact@v4
with:
name: ${{ env.APP_NAME }}-macos-silicon.dmg
path: Subterfuge-1.2.0-silicon.dmg
android:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v5
- uses: actions/setup-java@v5
with:
distribution: "temurin"
java-version: "17"
cache: "gradle"
- name: Install FVM
run: |
curl -fsSL https://fvm.app/install.sh | bash
echo "$HOME/fvm/bin" >> $GITHUB_PATH
- run: fvm install
- run: fvm flutter pub get
- run: fvm dart run build_runner build --delete-conflicting-outputs
- run: fvm flutter build apk --release
- name: Upload Android APK
uses: actions/upload-artifact@v4
with:
name: ${{ env.APP_NAME }}-android.apk
path: build/app/outputs/flutter-apk/app-release.apk
linux-x64:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v5
- run: sudo apt-get update
- run: sudo apt-get install build-essential libgtk-3-dev
- name: Install FVM
run: |
curl -fsSL https://fvm.app/install.sh | bash
echo "$HOME/fvm/bin" >> $GITHUB_PATH
- run: fvm install
- run: fvm flutter pub get
- run: fvm dart run build_runner build --delete-conflicting-outputs
- run: fvm flutter config --enable-linux-desktop
- run: fvm flutter build linux --release --target-platform=linux-x64
- name: Install appimage-builder dependencies
run: sudo apt install -y binutils coreutils desktop-file-utils fakeroot fuse libgdk-pixbuf2.0-dev patchelf python3-pip python3-setuptools squashfs-tools strace util-linux zsync
- name: Install appimage-builder
run: |
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
chmod +x appimage-builder-x86_64.AppImage
sudo mv appimage-builder-x86_64.AppImage /usr/local/bin/appimage-builder
- name: Build AppImage
run: appimage-builder --recipe appimage_builder_x64.yml --skip-test
- name: Upload Linux x64 AppImage
uses: actions/upload-artifact@v4
with:
name: ${{ env.APP_NAME }}-linux-x64.AppImage
path: "*.AppImage"
windows:
runs-on: windows-2025
steps:
- uses: actions/checkout@v5
- run: choco install fvm
- run: fvm install
- run: fvm flutter pub get
- run: fvm dart run build_runner build --delete-conflicting-outputs
- run: fvm flutter config --enable-windows-desktop
- run: fvm flutter build windows --release
- run: fvm dart run msix:create
- name: Upload Windows MSIX
uses: actions/upload-artifact@v4
with:
name: ${{ env.APP_NAME }}-windows-x64.msix
path: build\windows\x64\runner\Release\*.msix