Skip to content

Publish Windows, MacOS, and Android #13

Publish Windows, MacOS, and Android

Publish Windows, MacOS, and Android #13

Workflow file for this run

name: Publish Windows and Android apps
# 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@v3
- name: Setup Java
uses: actions/setup-java@v1
with:
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@v3
- 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 Flutter
uses: subosito/flutter-action@v2
with:
cache: true
cache-key: "flutter-windows" # we don't need *the* most recent build
- 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
generate_release:
needs: [build_android, build_windows]
runs-on: ubuntu-latest
steps:
- name: Download Android release
uses: actions/download-artifact@v4
with:
name: dashboard_android
path: dashboard.apk
- name: Download Windows release
uses: actions/download-artifact@v4
with:
name: dashboard_windows
path: dashboard.msix
- name: Create Release
uses: softprops/[email protected]
with:
files: |
dashboard.apk
dashboard.msix
name: ${{ github.ref_name }}
generate_release_notes: true
fail_on_unmatched_files: true
# end of generate_release