Merge branch 'main' into macos/gamepad #32
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |