Build Fladder #514
This file contains hidden or 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: Build Fladder | |
| on: | |
| push: | |
| tags: | |
| - "v*" | |
| branches: | |
| - master | |
| pull_request: | |
| paths: | |
| - pubspec.yaml | |
| - .github/workflows/build.yml | |
| - .fvmrc | |
| types: | |
| - opened | |
| - reopened | |
| schedule: | |
| # Run nightly at midnight UTC, but only if there were changes to develop | |
| - cron: "0 0 * * *" | |
| workflow_dispatch: | |
| inputs: | |
| build_type: | |
| description: "Build type (release, nightly)" | |
| required: false | |
| default: "nightly" | |
| type: choice | |
| options: | |
| - release | |
| - nightly | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| env: | |
| NIGHTLY_TAG: nightly | |
| jobs: | |
| # Check if workflow should run based on trigger conditions | |
| check-trigger: | |
| runs-on: ubuntu-latest | |
| outputs: | |
| should_run: ${{ steps.check.outputs.should_run }} | |
| build_type: ${{ steps.check.outputs.build_type }} | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4.1.1 | |
| with: | |
| fetch-depth: 0 | |
| - name: Check if should run and determine build type | |
| id: check | |
| run: | | |
| # Determine build type based on trigger and input | |
| if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then | |
| BUILD_TYPE="${{ github.event.inputs.build_type }}" | |
| elif [[ "${{ startsWith(github.ref, 'refs/tags/v') }}" == "true" ]]; then | |
| BUILD_TYPE="release" | |
| elif [[ "${{ github.event_name }}" == "schedule" ]]; then | |
| # Check if there were commits to develop in the last 24 hours | |
| git checkout develop | |
| COMMITS_LAST_24H=$(git log --since="24 hours ago" --oneline | wc -l) | |
| if [[ $COMMITS_LAST_24H -gt 0 ]]; then | |
| BUILD_TYPE="nightly" | |
| else | |
| echo "No commits to develop in the last 24 hours, skipping nightly build" | |
| echo "should_run=false" >> $GITHUB_OUTPUT | |
| exit 0 | |
| fi | |
| elif [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then | |
| BUILD_TYPE="nightly" | |
| else | |
| # For PRs and other events, build but don't release | |
| BUILD_TYPE="development" | |
| fi | |
| echo "build_type=${BUILD_TYPE}" >> $GITHUB_OUTPUT | |
| echo "should_run=true" >> $GITHUB_OUTPUT | |
| echo "Build type determined: ${BUILD_TYPE}" | |
| fetch-info: | |
| needs: [check-trigger] | |
| if: needs.check-trigger.outputs.should_run == 'true' | |
| runs-on: ubuntu-latest | |
| outputs: | |
| version_name: ${{ steps.fetch.outputs.version_name }} | |
| flutter_version: ${{ steps.fetch.outputs.flutter_version }} | |
| nightly_version: ${{ steps.fetch.outputs.nightly_version }} | |
| build_type: ${{ needs.check-trigger.outputs.build_type }} | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4.1.1 | |
| with: | |
| fetch-depth: 0 | |
| - name: Fetch version name and create nightly version | |
| id: fetch | |
| run: | | |
| # Extract version_name from pubspec.yaml | |
| VERSION_NAME=$(grep '^version:' pubspec.yaml | cut -d ':' -f2 | cut -d '+' -f1 | tr -d ' ') | |
| echo "version_name=${VERSION_NAME}" >> "$GITHUB_OUTPUT" | |
| # Extract flutter_version from .fvmrc | |
| FLUTTER_VERSION=$(jq -r '.flutter' .fvmrc) | |
| echo "flutter_version=${FLUTTER_VERSION}" >> "$GITHUB_OUTPUT" | |
| # Create nightly version if needed | |
| if [[ "${{ needs.check-trigger.outputs.build_type }}" == "nightly" ]]; then | |
| NIGHTLY_VERSION="${VERSION_NAME}-nightly" | |
| echo "nightly_version=${NIGHTLY_VERSION}" >> "$GITHUB_OUTPUT" | |
| echo "Nightly version: $NIGHTLY_VERSION" | |
| fi | |
| # Print versions for logging | |
| echo "Base version: $VERSION_NAME" | |
| echo "Flutter version: $FLUTTER_VERSION" | |
| shell: bash | |
| build-android: | |
| needs: [fetch-info] | |
| runs-on: ubuntu-latest | |
| outputs: | |
| artifact_suffix: ${{ env.ARTIFACT_SUFFIX }} | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4.1.1 | |
| - name: Determine Build Type | |
| run: | | |
| echo "ARTIFACT_SUFFIX=${{ needs.fetch-info.outputs.build_type }}" >> $GITHUB_ENV | |
| echo "ARTIFACT_SUFFIX=${{ needs.fetch-info.outputs.build_type }}" >> $GITHUB_OUTPUT | |
| - name: Decode Keystore for release | |
| 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/flutter-action@v2.19.0 | |
| with: | |
| channel: "stable" | |
| flutter-version: ${{needs.fetch-info.outputs.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/${{ env.ARTIFACT_SUFFIX }}.apk" | |
| mv build/app/outputs/bundle/productionRelease/app-production-release.aab "build/app/outputs/android_artifacts/${{ env.ARTIFACT_SUFFIX }}.aab" | |
| - name: Archive Android artifacts | |
| uses: actions/upload-artifact@v4.0.0 | |
| with: | |
| name: fladder-android | |
| path: build/app/outputs/android_artifacts/ | |
| build-windows: | |
| runs-on: windows-2022 | |
| needs: [fetch-info] | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4.1.1 | |
| - name: Set up Flutter | |
| uses: subosito/flutter-action@v2.19.0 | |
| with: | |
| channel: "stable" | |
| flutter-version: ${{needs.fetch-info.outputs.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 Windows EXE | |
| run: flutter build windows --build-number=${{ github.run_number }} | |
| - name: Compile Inno Setup installer | |
| uses: Minionguyjpro/Inno-Setup-Action@v1.2.2 | |
| with: | |
| path: windows/windows_setup.iss | |
| options: /O+ /DFLADDER_VERSION="${{ needs.fetch-info.outputs.version_name }}" | |
| - name: Archive Windows portable artifact | |
| uses: actions/upload-artifact@v4.0.0 | |
| with: | |
| name: fladder-windows-portable | |
| path: build\windows\x64\runner\Release\ | |
| - name: Archive Windows installer artifact | |
| uses: actions/upload-artifact@v4.0.0 | |
| with: | |
| name: fladder-windows-installer | |
| path: windows\Output\fladder_setup.exe | |
| build-ios: | |
| runs-on: macos-latest | |
| needs: [fetch-info] | |
| steps: | |
| # - uses: maxim-lobanov/setup-xcode@v1.6.0 | |
| # with: | |
| # xcode-version: latest-stable | |
| - name: Checkout repository | |
| uses: actions/checkout@v4.1.1 | |
| - name: Set up Flutter | |
| uses: subosito/flutter-action@v2.19.0 | |
| with: | |
| channel: "stable" | |
| flutter-version: ${{needs.fetch-info.outputs.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 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/upload-artifact@v4.0.0 | |
| 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/checkout@v4.1.1 | |
| - name: Set up Flutter | |
| uses: subosito/flutter-action@v2.19.0 | |
| with: | |
| channel: "stable" | |
| flutter-version: ${{needs.fetch-info.outputs.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 macOS app | |
| run: flutter build macos --flavor production --build-number=${{ github.run_number }} | |
| - name: Ensure correct app name casing | |
| run: | | |
| APP_DIR="build/macos/Build/Products/Release-production" | |
| mv "$APP_DIR/fladder.app" "$APP_DIR/Fladder.app" | |
| - name: Install create-dmg | |
| run: brew install create-dmg | |
| - name: Create DMG with custom background | |
| run: ./scripts/create_dmg.sh | |
| - name: Archive macOS artifact | |
| uses: actions/upload-artifact@v4.0.0 | |
| with: | |
| name: fladder-macOS | |
| path: build/macos/Build/Products/Release-production/macOS.dmg | |
| build-linux: | |
| runs-on: ubuntu-latest | |
| needs: [fetch-info] | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4.1.1 | |
| - name: Set up Flutter | |
| uses: subosito/flutter-action@v2.19.0 | |
| with: | |
| channel: "stable" | |
| flutter-version: ${{needs.fetch-info.outputs.flutter_version}} | |
| cache: true | |
| cache-key: "flutter-:os:-:channel:-:version:-:arch:-:hash:" | |
| cache-path: "${{ runner.tool_cache }}/flutter/:channel:-:version:-:arch:" | |
| - name: Update build number in pubspec.yaml | |
| run: | | |
| sed -i -E 's/(version: [0-9]+\.[0-9]+\.[0-9]+\+)[0-9]+/\1${{ github.run_number }}/' pubspec.yaml | |
| - 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 libfuse2 | |
| - 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 | |
| - name: Build AppImage | |
| run: | | |
| VERSION_TO_USE="${{ needs.fetch-info.outputs.version_name }}" | |
| sed -i -E "s/(version:\\s*)latest/\\1${VERSION_TO_USE}/" AppImageBuilder.yml | |
| 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 | |
| appimage-builder --recipe AppImageBuilder.yml | |
| - name: Archive Linux artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: fladder-linux-appimage | |
| path: | | |
| Fladder_x86_64.AppImage | |
| Fladder_x86_64.AppImage.zsync | |
| build-linux-flatpak: | |
| runs-on: ubuntu-latest | |
| if: needs.fetch-info.outputs.build_type == 'release' || needs.fetch-info.outputs.build_type == 'nightly' | |
| needs: [fetch-info, build-linux] | |
| container: | |
| image: bilelmoussaoui/flatpak-github-actions:gnome-46 | |
| options: --privileged | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4.1.1 | |
| 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/checkout@v4.1.1 | |
| - name: Set up Flutter | |
| uses: subosito/flutter-action@v2.19.0 | |
| with: | |
| channel: "stable" | |
| flutter-version: ${{needs.fetch-info.outputs.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 web app | |
| run: | | |
| flutter build web --release --build-number=${{github.run_number}} | |
| - name: Archive web artifact | |
| uses: actions/upload-artifact@v4.0.0 | |
| with: | |
| name: fladder-web | |
| path: build/web | |
| - name: Build Github pages web | |
| if: needs.fetch-info.outputs.build_type == 'release' | |
| run: flutter build web --base-href /${{ github.event.repository.name }}/ --release --build-number=$GITHUB_RUN_NUMBER | |
| - name: Archive web pages artifact | |
| if: needs.fetch-info.outputs.build_type == 'release' | |
| uses: actions/upload-artifact@v4.0.0 | |
| with: | |
| name: fladder-web-pages | |
| path: 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: needs.fetch-info.outputs.build_type == 'release' || needs.fetch-info.outputs.build_type == 'nightly' | |
| permissions: | |
| contents: write | |
| steps: | |
| - name: Checkout repository | |
| if: needs.fetch-info.outputs.build_type == 'nightly' | |
| uses: actions/checkout@v4.1.1 | |
| with: | |
| fetch-depth: 0 | |
| - name: Set version variables | |
| id: version | |
| run: | | |
| if [[ "${{ needs.fetch-info.outputs.build_type }}" == "nightly" ]]; then | |
| echo "version=${{ needs.fetch-info.outputs.nightly_version }}" >> $GITHUB_OUTPUT | |
| else | |
| echo "version=${{ needs.fetch-info.outputs.version_name }}" >> $GITHUB_OUTPUT | |
| fi | |
| - name: Delete existing nightly release | |
| if: needs.fetch-info.outputs.build_type == 'nightly' | |
| run: | | |
| # Delete existing nightly release and tag with better error handling | |
| echo "Checking for existing nightly release..." | |
| if gh release view ${{ env.NIGHTLY_TAG }} >/dev/null 2>&1; then | |
| echo "Deleting existing nightly release..." | |
| gh release delete ${{ env.NIGHTLY_TAG }} --yes --cleanup-tag | |
| else | |
| echo "No existing nightly release found." | |
| fi | |
| # Clean up any orphaned tags | |
| if git tag -l | grep -q "^${{ env.NIGHTLY_TAG }}$"; then | |
| echo "Deleting orphaned nightly tag..." | |
| git push origin --delete ${{ env.NIGHTLY_TAG }} || true | |
| fi | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Generate changelog | |
| if: needs.fetch-info.outputs.build_type == 'nightly' | |
| id: changelog | |
| run: | | |
| # Get the latest stable release tag for comparison | |
| LATEST_STABLE_RELEASE=$(gh release list --limit 50 --exclude-drafts --json tagName,isPrerelease --jq '.[] | select(.isPrerelease == false) | .tagName' | head -1 || echo "") | |
| # Create new changelog with comparison link | |
| cat > changelog.md <<-EOF | |
| # $(date -u "+%Y-%m-%d %H:%M:%S UTC") | |
| This is an automated nightly build containing the latest changes from the develop branch. | |
| **⚠️ Warning:** This is a development build and may contain bugs or incomplete features. | |
| EOF | |
| # Add comparison link if we have a latest stable release | |
| if [ -n "$LATEST_STABLE_RELEASE" ]; then | |
| cat >> changelog.md <<-EOF | |
| ## 📋 What's Changed | |
| See all changes since the latest release: [Compare $LATEST_STABLE_RELEASE...HEAD](https://github.com/${{ github.repository }}/compare/$LATEST_STABLE_RELEASE...HEAD) | |
| EOF | |
| else | |
| cat >> changelog.md <<-EOF | |
| ## 📋 What's Changed | |
| See all changes: [View commits](https://github.com/${{ github.repository }}/commits/develop) | |
| EOF | |
| fi | |
| # Add build metadata | |
| cat >> changelog.md <<-EOF | |
| --- | |
| 📅 **Build Date:** $(date -u "+%Y-%m-%d %H:%M:%S UTC") | |
| 🔧 **Build Number:** ${{ github.run_number }} | |
| 📝 **Commit:** ${{ github.sha }} | |
| 🌿 **Branch:** develop | |
| EOF | |
| echo "changelog_file=changelog.md" >> $GITHUB_OUTPUT | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Download Artifacts Android | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: fladder-android | |
| path: fladder-android | |
| - name: Move Android | |
| run: | | |
| mv fladder-android/${{ needs.build-android.outputs.artifact_suffix }}.apk Fladder-Android-${{ steps.version.outputs.version }}.apk | |
| mv fladder-android/${{ needs.build-android.outputs.artifact_suffix }}.aab Fladder-Android-${{ steps.version.outputs.version }}.aab | |
| - name: Download Windows portable artifact | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: fladder-windows-portable | |
| path: fladder-windows-portable | |
| - name: Compress Windows | |
| run: | | |
| cd fladder-windows-portable | |
| zip -r ../Fladder-Windows-${{ steps.version.outputs.version }}.zip . | |
| - name: Download Windows installer artifact | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: fladder-windows-installer | |
| path: fladder-windows-installer | |
| - name: Rename Windows installer | |
| run: mv fladder-windows-installer/fladder_setup.exe Fladder-Windows-${{ steps.version.outputs.version }}-Setup.exe | |
| - 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-${{ steps.version.outputs.version }}.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-${{ steps.version.outputs.version }}.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-${{ steps.version.outputs.version }}.zip . | |
| - name: Download Artifacts Linux Flatpak | |
| if: needs.fetch-info.outputs.build_type == 'release' | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: fladder-linux-flatpak | |
| path: fladder-linux-flatpak | |
| - name: Move Linux Flatpak | |
| if: needs.fetch-info.outputs.build_type == 'release' | |
| run: mv fladder-linux-flatpak/Fladder-Linux.flatpak Fladder-Linux-${{ steps.version.outputs.version }}.flatpak | |
| - name: Download Artifacts Linux AppImage | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: fladder-linux-appimage | |
| path: fladder-linux-appimage | |
| - name: Move Linux AppImages | |
| run: | | |
| mv fladder-linux-appimage/Fladder_x86_64.AppImage Fladder-Linux-${{ steps.version.outputs.version }}.AppImage | |
| mv fladder-linux-appimage/Fladder_x86_64.AppImage.zsync Fladder-Linux-${{ steps.version.outputs.version }}.AppImage.zsync | |
| - 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-${{ steps.version.outputs.version }}.zip . | |
| - name: Create Release | |
| uses: softprops/action-gh-release@v2.2.2 | |
| with: | |
| tag_name: ${{ needs.fetch-info.outputs.build_type == 'nightly' && env.NIGHTLY_TAG || github.ref_name }} | |
| name: ${{ needs.fetch-info.outputs.build_type == 'nightly' && format('🌙 Nightly Build - {0}', steps.version.outputs.version) || '' }} | |
| body_path: ${{ needs.fetch-info.outputs.build_type == 'nightly' && 'changelog.md' || '' }} | |
| draft: ${{ needs.fetch-info.outputs.build_type == 'release' }} | |
| prerelease: ${{ needs.fetch-info.outputs.build_type == 'nightly' }} | |
| make_latest: ${{ needs.fetch-info.outputs.build_type == 'release' }} | |
| generate_release_notes: ${{ needs.fetch-info.outputs.build_type == 'release' }} | |
| fail_on_unmatched_files: true | |
| files: | | |
| Fladder-Android-${{ steps.version.outputs.version }}.apk | |
| Fladder-Android-${{ steps.version.outputs.version }}.aab | |
| Fladder-Windows-${{ steps.version.outputs.version }}-Setup.exe | |
| Fladder-Windows-${{ steps.version.outputs.version }}.zip | |
| Fladder-iOS-${{ steps.version.outputs.version }}.ipa | |
| Fladder-macOS-${{ steps.version.outputs.version }}.dmg | |
| Fladder-Web-${{ steps.version.outputs.version }}.zip | |
| Fladder-Linux-${{ steps.version.outputs.version }}.zip | |
| Fladder-Linux-${{ steps.version.outputs.version }}.AppImage | |
| Fladder-Linux-${{ steps.version.outputs.version }}.AppImage.zsync | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Add Flatpak to release | |
| if: needs.fetch-info.outputs.build_type == 'release' | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| tag_name: ${{ github.ref_name }} | |
| files: | | |
| Fladder-Linux-${{ steps.version.outputs.version }}.flatpak | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| release_play_console: | |
| name: Upload AAB to Google Play Console | |
| needs: | |
| - fetch-info | |
| - create_release | |
| - build-android | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Download Artifacts Android | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: fladder-android | |
| path: fladder-android | |
| - name: Upload AAB to Google Play Console | |
| uses: r0adkll/upload-google-play@v1.1.3 | |
| with: | |
| serviceAccountJsonPlainText: ${{ secrets.SERVICE_ACCOUNT_JSON }} | |
| packageName: "nl.jknaapen.fladder" | |
| releaseFiles: "fladder-android/${{ needs.build-android.outputs.artifact_suffix }}.aab" | |
| track: ${{ needs.fetch-info.outputs.build_type == 'nightly' && 'internal' || 'production' }} | |
| status: ${{ needs.fetch-info.outputs.build_type == 'nightly' && 'completed' || 'draft' }} | |
| releaseName: "${{ github.run_number }} (${{ needs.fetch-info.outputs.version_name }})" | |
| release_web: | |
| name: Release Web | |
| needs: | |
| - fetch-info | |
| - create_release | |
| runs-on: ubuntu-latest | |
| if: needs.fetch-info.outputs.build_type == 'release' | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4.1.1 | |
| - name: Download Artifacts Web | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: fladder-web | |
| path: build/web | |
| - name: Deploy to ghcr.io | |
| 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: Deploy rootless-image to ghcr.io | |
| uses: mr-smithers-excellent/docker-build-push@v6 | |
| with: | |
| dockerfile: Dockerfile-rootless | |
| image: fladder-rootless | |
| addLatest: true | |
| multiPlatform: true | |
| platform: linux/amd64,linux/arm64,linux/arm/v7 | |
| registry: ghcr.io | |
| username: ${{ github.actor }} | |
| password: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Clean builds folder | |
| run: rm -rf build/web | |
| - name: Download Artifacts Web | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: fladder-web-pages | |
| path: build/web | |
| - name: Deploy to GitHub Pages | |
| uses: peaceiris/actions-gh-pages@v4 | |
| with: | |
| github_token: ${{ secrets.GITHUB_TOKEN }} | |
| publish_dir: ./build/web | |
| # Winget package submission | |
| # winget-package-submit: | |
| # runs-on: ubuntu-latest | |
| # needs: [check-trigger, create_release] | |
| # strategy: | |
| # matrix: | |
| # include: | |
| # - build_type: release | |
| # identifier: DonutWare.Fladder | |
| # max_versions: "0" | |
| # - build_type: nightly | |
| # identifier: DonutWare.Fladder.Nightly | |
| # max_versions: "1" | |
| # steps: | |
| # - name: Submit to Winget (${{ matrix.build_type }}) | |
| # if: needs.check-trigger.outputs.build_type == matrix.build_type | |
| # uses: vedantmgoyal9/winget-releaser@19e706d4c9121098010096f9c495a70a7518b30f | |
| # with: | |
| # identifier: ${{ matrix.identifier }} | |
| # installers-regex: 'Fladder-Windows-.*-Setup\.exe$' | |
| # token: ${{ secrets.WINGET_TOKEN }} | |
| # max-versions-to-keep: ${{ matrix.max_versions || '' }} | |
| # release-tag: ${{ matrix.build_type == 'nightly' && env.NIGHTLY_TAG || github.ref_name }} |