Skip to content

Merge branch 'main' into macos/gamepad #32

Merge branch 'main' into macos/gamepad

Merge branch 'main' into macos/gamepad #32

Workflow file for this run

name: Publish Windows, MacOS, and Android
# Builds a Windows App Installer (.msix) for the Dashboard
#
# To use this action, add your Windows Certificate file, in base64 format, to a
# repository secret called WINDOWS_CERTIFICATE. This action then:
# - Installs Flutter and clones your repository
# - Decodes your text certificate into a binary .pfx file
# - Runs flutter pub run msix:create to build and sign your Flutter app
# - Creates a new release and uploads the generated .msix file to it
on:
push:
tags: "*"
jobs:
build_android:
name: Build Android APK
runs-on: ubuntu-latest
steps:
- name: Clone repository
uses: actions/checkout@v4
- name: Setup Java
uses: actions/setup-java@v4
with:
distribution: "zulu"
java-version: '17'
- name: Install Flutter
uses: subosito/flutter-action@v2
with:
cache: true
cache-key: "flutter-ubuntu" # we don't need *the* most recent build
- name: Build APK
run: flutter build apk
- name: Upload APK
uses: actions/upload-artifact@v4
with:
name: dashboard_android
path: build/app/outputs/apk/release/app-release.apk
# End of build_android
build_windows:
name: Build Windows MSIX
runs-on: windows-latest
env:
windows_certificate: ${{ secrets.WINDOWS_CERTIFICATE }}
steps:
- name: Clone repository
uses: actions/checkout@v4
- name: Load certificate
run: |
echo "${{ env.windows_certificate }}" > windows_certificate_decoded.txt
openssl enc -base64 -d -in windows_certificate_decoded.txt -out windows_certificate.pfx
- name: Install Windows Game Development Kit (GDK) for SDL
uses: libsdl-org/SDL/.github/actions/setup-gdk-desktop@main
- name: Install Flutter
uses: subosito/flutter-action@v2
with:
flutter-version: 3.24.3
cache: true
cache-key: "flutter-windows" # we don't need *the* most recent build
- name: Flutter Doctor
run: flutter doctor
- name: Build MSIX
run: |
flutter pub get
dart run msix:create
- name: Upload MSIX
uses: actions/upload-artifact@v4
with:
name: dashboard_windows
path: build/windows/x64/runner/Release/dashboard.msix
# # End of build_windows
build_macos:
name: Build MacOS DMG
runs-on: macos-latest
steps:
- name: Clone repository
uses: actions/checkout@v4
- name: Install Flutter
uses: subosito/flutter-action@v2
with:
cache: true
cache-key: "flutter-macos" # we don't need *the* most recent build
- name: Check on Flutter
run: flutter doctor -v
- name: Install AppDmg tool
run: npm install --global appdmg
- name: Install dependencies
run: brew install automake libtool
- name: Build MacOS release
run: flutter build macos
- name: Package into DMG file
run: appdmg macos/installer_config.json dashboard_macos.dmg
- name: Upload DMG
uses: actions/upload-artifact@v4
with:
name: dashboard_macos
path: dashboard_macos.dmg
# End of build_windows
generate_release:
needs: [build_android, build_windows, build_macos]
runs-on: ubuntu-latest
steps:
- name: Download Android release
uses: actions/download-artifact@v4
with:
name: dashboard_android
- name: Download Windows release
uses: actions/download-artifact@v4
with:
name: dashboard_windows
- name: Download MacOS release
uses: actions/download-artifact@v4
with:
name: dashboard_macos
- name: Organize files
run: |
ls -al
mv app-release.apk dashboard_android.apk
mv dashboard.msix dashboard_windows.msix
- name: Create Release
uses: softprops/action-gh-release@v2
with:
files: |
dashboard_android.apk
dashboard_windows.msix
dashboard_macos.dmg
name: ${{ github.ref_name }}
generate_release_notes: true
fail_on_unmatched_files: true
# # end of generate_release