Skip to content

chore: Update to latest windows runner #84

chore: Update to latest windows runner

chore: Update to latest windows runner #84

Workflow file for this run

name: Build Fladder
on:
push:
tags:
- "v*"
branches:
- master
pull_request:
paths:
- pubspec.yaml
- .github/workflows/build.yml
types:
- opened
- reopened
workflow_dispatch:
jobs:
fetch-info:
runs-on: ubuntu-latest
outputs:
version_name: ${{ steps.fetch.outputs.version_name }}
steps:
- name: Checkout repository
uses: actions/[email protected]
- name: Fetch version name
id: fetch
run: |
VERSION_NAME=$(grep '^version:' pubspec.yaml | cut -d ':' -f2 | cut -d '+' -f1 | tr -d ' ')
echo "version_name=${VERSION_NAME}" >> "$GITHUB_OUTPUT"
shell: bash
build-android:
needs: [fetch-info]
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/[email protected]
- name: Decode Keystore
env:
ENCODED_STRING: ${{ secrets.KEYSTORE_BASE_64 }}
RELEASE_KEYSTORE_PASSWORD: ${{ secrets.RELEASE_KEYSTORE_PASSWORD }}
RELEASE_KEYSTORE_ALIAS: ${{ secrets.RELEASE_KEYSTORE_ALIAS }}
RELEASE_KEY_PASSWORD: ${{ secrets.RELEASE_KEY_PASSWORD }}
GITHUB_RUN_NUMBER: ${{ github.run_number }}
run: |
echo "$ENCODED_STRING" | base64 -d > android/app/keystore.jks
# Create the key.properties file
cat > android/app/key.properties <<EOF
storePassword=$RELEASE_KEYSTORE_PASSWORD
keyPassword=$RELEASE_KEY_PASSWORD
keyAlias=$RELEASE_KEYSTORE_ALIAS
EOF
- name: Setup Java
uses: actions/setup-java@v4
with:
distribution: "zulu"
java-version: "17"
cache: "gradle"
check-latest: true
- name: Set up Flutter
uses: subosito/[email protected]
with:
channel: ${{ vars.FLUTTER_CHANNEL }}
flutter-version: ${{ vars.FLUTTER_VERSION }}
cache: true
cache-key: "flutter-:os:-:channel:-:version:-:arch:-:hash:"
cache-path: "${{ runner.tool_cache }}/flutter/:channel:-:version:-:arch:"
- name: Get dependencies
run: flutter pub get
- name: Build Android APK and AAB
run: |
flutter build apk --release --build-number=${{github.run_number}} --flavor production
flutter build appbundle --release --build-number=${{github.run_number}} --flavor production
- name: Rename APK and AAB
run: |
mkdir -p build/app/outputs/android_artifacts
mv build/app/outputs/flutter-apk/app-production-release.apk "build/app/outputs/android_artifacts/release-signed.apk"
mv build/app/outputs/bundle/productionRelease/app-production-release.aab "build/app/outputs/android_artifacts/release-signed.aab"
- name: Archive Android artifacts
uses: actions/[email protected]
with:
name: fladder-android
path: build/app/outputs/android_artifacts/
build-windows:
runs-on: windows-latest
needs: [fetch-info]
steps:
- name: Checkout repository
uses: actions/[email protected]
- name: Set up Flutter
uses: subosito/[email protected]
with:
channel: ${{ vars.FLUTTER_CHANNEL }}
flutter-version: ${{ vars.FLUTTER_VERSION }}
cache: true
cache-key: "flutter-:os:-:channel:-:version:-:arch:-:hash:" # optional, change this to force refresh cache
cache-path: "${{ runner.tool_cache }}/flutter/:channel:-:version:-:arch:" # optional, change this to specify the cache path
- name: Get dependencies
run: flutter pub get
- name: Build Windows EXE
run: flutter build windows --build-number=${{ github.run_number }}
- name: Archive Windows artifact
uses: actions/[email protected]
with:
name: fladder-windows
path: build\windows\x64\runner\Release\
build-ios:
runs-on: macos-latest
needs: [fetch-info]
steps:
- name: Checkout repository
uses: actions/[email protected]
- name: Set up Flutter
uses: subosito/[email protected]
with:
channel: ${{ vars.FLUTTER_CHANNEL }}
flutter-version: ${{ vars.FLUTTER_VERSION }}
cache: true
cache-key: "flutter-:os:-:channel:-:version:-:arch:-:hash:" # optional, change this to specify the cache path
cache-path: "${{ runner.tool_cache }}/flutter/:channel:-:version:-:arch:" # optional, change this to specify the cache path
- name: Get dependencies
run: flutter pub get
- name: Build iOS app
run: flutter build ipa --no-codesign --flavor production --build-number=${{ github.run_number }}
- name: Create unsigned IPA
run: |
cd build/ios/archive/Runner.xcarchive/Products/Applications/
mkdir Payload
mv Runner.app Payload/
zip -r iOS.ipa Payload
- name: Archive iOS IPA artifact
uses: actions/[email protected]
with:
name: fladder-iOS
path: build/ios/archive/Runner.xcarchive/Products/Applications/iOS.ipa
build-macos:
runs-on: macos-latest
needs: [fetch-info]
steps:
- name: Checkout repository
uses: actions/[email protected]
- name: Set up Flutter
uses: subosito/[email protected]
with:
channel: ${{ vars.FLUTTER_CHANNEL }}
flutter-version: ${{ vars.FLUTTER_VERSION }}
cache: true
cache-key: "flutter-:os:-:channel:-:version:-:arch:-:hash:" # optional, change this to force refresh cache
cache-path: "${{ runner.tool_cache }}/flutter/:channel:-:version:-:arch:" # optional, change this to specify the cache path
- name: Get dependencies
run: flutter pub get
- name: Build macOS app
run: flutter build macos --flavor production --build-number=${{ github.run_number }}
- name: Create DMG file
run: hdiutil create -format UDZO -srcfolder build/macos/Build/Products/Release-production/fladder.app build/macos/Build/Products/Release-production/macOS.dmg
- name: Archive macOS artifact
uses: actions/[email protected]
with:
name: fladder-macOS
path: build/macos/Build/Products/Release-production/macOS.dmg
build-linux:
runs-on: ubuntu-24.04 # bumped from 22.04 (latest) as it would otherwise use libmpv1
needs: [fetch-info]
steps:
- name: Checkout repository
uses: actions/[email protected]
- name: Set up Flutter
uses: subosito/[email protected]
with:
channel: ${{ vars.FLUTTER_CHANNEL }}
flutter-version: ${{ vars.FLUTTER_VERSION }}
cache: true
cache-key: "flutter-:os:-:channel:-:version:-:arch:-:hash:" # optional, change this to force refresh cache
cache-path: "${{ runner.tool_cache }}/flutter/:channel:-:version:-:arch:" # optional, change this to specify the cache path
- name: Get dependencies
run: flutter pub get
- name: Get packages
run: |
sudo apt-get update -y
sudo apt-get install -y ninja-build libgtk-3-dev libmpv-dev patchelf cmake clang
- name: Build Linux app
run: flutter build linux --release --build-number=${{ github.run_number }}
- name: Fix RPATH
run: |
for lib in "build/linux/x64/release/bundle/lib"/*.so; do
[[ -f "$lib" && -n "$(patchelf --print-rpath "$lib")" ]] && \
patchelf --set-rpath '$ORIGIN' "$lib"
done
patchelf --set-rpath '$ORIGIN/lib' "build/linux/x64/release/bundle/Fladder"
- name: Archive Linux artifact
uses: actions/upload-artifact@v4
with:
name: fladder-linux
path: build/linux/x64/release/bundle
build-linux-flatpak:
name: "Flatpak"
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/v')
needs: [fetch-info, build-linux]
container:
image: bilelmoussaoui/flatpak-github-actions:gnome-46
options: --privileged
steps:
- name: Checkout repository
uses: actions/[email protected]
with:
submodules: true
- name: Download Artifacts Linux
uses: actions/download-artifact@v4
with:
name: fladder-linux
path: build/linux/x64/release/bundle
- uses: flatpak/flatpak-github-actions/flatpak-builder@v6
with:
bundle: Fladder-Linux.flatpak
manifest-path: flatpak/nl.jknaapen.fladder.yaml
- name: Archive Linux Flatpak bundle
uses: actions/upload-artifact@v4
with:
name: fladder-linux-flatpak
path: Fladder-Linux.flatpak
build-web:
runs-on: ubuntu-latest
needs: [fetch-info]
steps:
- name: Checkout repository
uses: actions/[email protected]
- name: Set up Flutter
uses: subosito/[email protected]
with:
channel: ${{ vars.FLUTTER_CHANNEL }}
flutter-version: ${{ vars.FLUTTER_VERSION }}
cache: true
cache-key: "flutter-:os:-:channel:-:version:-:arch:-:hash:" # optional, change this to force refresh cache
cache-path: "${{ runner.tool_cache }}/flutter/:channel:-:version:-:arch:" # optional, change this to specify the cache path
- name: Get dependencies
run: flutter pub get
- name: Build web app
run: |
flutter build web --release --build-number=${{github.run_number}}
- name: Archive web artifact
uses: actions/[email protected]
with:
name: fladder-web
path: build/web
- name: Deploy to ghcr.io
if: startsWith(github.ref, 'refs/tags/v')
uses: mr-smithers-excellent/docker-build-push@v6
with:
image: fladder
addLatest: true
multiPlatform: true
platform: linux/amd64,linux/arm64,linux/arm/v7
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build Github pages web
if: startsWith(github.ref, 'refs/tags/v')
run: flutter build web --base-href /${{ github.event.repository.name }}/ --release --build-number=$GITHUB_RUN_NUMBER
- name: Deploy to GitHub Pages
if: startsWith(github.ref, 'refs/tags/v')
uses: peaceiris/actions-gh-pages@v4
with:
github_token: ${{ secrets.GITHUB_TOKEN }} # Automatically provided by GitHub Actions
publish_dir: ./build/web
create_release:
name: Create Release
needs:
- fetch-info
- build-android
- build-windows
- build-ios
- build-macos
- build-linux
- build-linux-flatpak
- build-web
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/v')
steps:
- name: Download Artifacts Android
uses: actions/download-artifact@v4
with:
name: fladder-android
path: fladder-android
- name: Move Android
run: |
mv fladder-android/release-signed.apk Fladder-Android-${{needs.fetch-info.outputs.version_name}}.apk
mv fladder-android/release-signed.aab Fladder-Android-${{needs.fetch-info.outputs.version_name}}.aab
- name: Download Artifacts Windows
uses: actions/download-artifact@v4
with:
name: fladder-windows
path: fladder-windows
- name: Compress Windows
run: |
cd fladder-windows
zip -r ../Fladder-Windows-${{needs.fetch-info.outputs.version_name}}.zip .
- name: Download Artifacts iOS
uses: actions/download-artifact@v4
with:
name: fladder-iOS
path: fladder-iOS
- name: Move iOS
run: mv fladder-iOS/iOS.ipa Fladder-iOS-${{needs.fetch-info.outputs.version_name}}.ipa
- name: Download Artifacts macOS
uses: actions/download-artifact@v4
with:
name: fladder-macOS
path: fladder-macOS
- name: Move macOS
run: mv fladder-macOS/macOS.dmg Fladder-macOS-${{needs.fetch-info.outputs.version_name}}.dmg
- name: Download Artifacts Linux
uses: actions/download-artifact@v4
with:
name: fladder-linux
path: fladder-linux
- name: Compress Linux
run: |
cd fladder-linux
zip -r ../Fladder-Linux-${{needs.fetch-info.outputs.version_name}}.zip .
- name: Download Artifacts Linux Flatpak
uses: actions/download-artifact@v4
with:
name: fladder-linux-flatpak
path: fladder-linux-flatpak
- name: Move Linux Flatpak
run: mv fladder-linux-flatpak/Fladder-Linux.flatpak Fladder-Linux-${{needs.fetch-info.outputs.version_name}}.flatpak
- name: Download Artifacts Web
uses: actions/download-artifact@v4
with:
name: fladder-web
path: fladder-web
- name: Compress Web
run: |
cd fladder-web
zip -r ../Fladder-Web-${{needs.fetch-info.outputs.version_name}}.zip .
- name: Release
uses: softprops/action-gh-release@v2
with:
draft: true
fail_on_unmatched_files: true
generate_release_notes: true
files: |
Fladder-Android-${{needs.fetch-info.outputs.version_name}}.apk
Fladder-Windows-${{needs.fetch-info.outputs.version_name}}.zip
Fladder-iOS-${{needs.fetch-info.outputs.version_name}}.ipa
Fladder-macOS-${{needs.fetch-info.outputs.version_name}}.dmg
Fladder-Web-${{needs.fetch-info.outputs.version_name}}.zip
Fladder-Linux-${{needs.fetch-info.outputs.version_name}}.zip
Fladder-Linux-${{needs.fetch-info.outputs.version_name}}.flatpak