name: Build Fladder artifacts on: push: tags: - "v*" branches: - master workflow_dispatch: jobs: build-android: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v4.1.1 - 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 <> $GITHUB_ENV echo "VERSION_NAME=$VERSION_NAME" >> $GITHUB_ENV # Build APK flutter build apk --release \ --build-name=$VERSION_NAME \ --build-number=$GITHUB_RUN_NUMBER \ --dart-define=FLAVOR=release # Build AAB flutter build appbundle --release \ --build-name=$VERSION_NAME \ --build-number=$GITHUB_RUN_NUMBER \ --dart-define=FLAVOR=release - name: Rename APK and AAB run: | mv build/app/outputs/flutter-apk/app-release.apk "build/app/outputs/flutter-apk/${{ env.APP_NAME }}-${{ env.VERSION_NAME }}-signed.apk" mv build/app/outputs/bundle/release/app-release.aab "build/app/outputs/bundle/release/${{ env.APP_NAME }}-${{ env.VERSION_NAME }}-signed.aab" - name: Archive Android artifacts uses: actions/upload-artifact@v4.0.0 with: name: ${{ env.APP_NAME }}-Android-${{ env.VERSION_NAME }} path: | build/app/outputs/flutter-apk/${{ env.APP_NAME }}-${{ env.VERSION_NAME }}-signed.apk build/app/outputs/bundle/release/${{ env.APP_NAME }}-${{ env.VERSION_NAME }}-signed.aab build-windows: runs-on: windows-latest steps: - name: Checkout repository uses: actions/checkout@v4.1.1 - name: Set up Flutter uses: subosito/flutter-action@v2.16.0 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: | $pubspec = Get-Content pubspec.yaml $APP_NAME = ($pubspec | Select-String '^name:' | ForEach-Object { ($_ -split ':')[1].Trim() }) $VERSION_NAME = ($pubspec | Select-String '^version:' | ForEach-Object { ($_ -split ':')[1].Trim().Split('+')[0] }) echo "APP_NAME=$APP_NAME" >> $Env:GITHUB_ENV echo "VERSION_NAME=$VERSION_NAME" >> $Env:GITHUB_ENV flutter build windows --build-name=$VERSION_NAME --build-number=$GITHUB_RUN_NUMBER - name: Archive Windows artifact uses: actions/upload-artifact@v4.0.0 with: name: ${{ env.APP_NAME }}-Windows-${{ env.VERSION_NAME }} path: build\windows\x64\runner\Release\ # build-ios: # runs-on: macos-latest # steps: # - name: Checkout repository # uses: actions/checkout@v4.1.1 # - name: Set up Flutter # uses: subosito/flutter-action@v2.16.0 # with: # channel: ${{ vars.FLUTTER_CHANNEL }} # flutter-version: ${{ vars.FLUTTER_VERSION }} # cache: true # cache-key: "flutter-:os:-:channel:-:version:-:arch:-:hash:" # optional # cache-path: "${{ runner.tool_cache }}/flutter/:channel:-:version:-:arch:" # optional # - name: Get dependencies # run: flutter pub get # - name: Build iOS app # run: | # APP_NAME=$(grep '^name:' pubspec.yaml | cut -d ':' -f2 | tr -d ' ') # VERSION_NAME=$(grep '^version:' pubspec.yaml | cut -d ':' -f2 | cut -d '+' -f1 | tr -d ' ') # echo "APP_NAME=$APP_NAME" >> $GITHUB_ENV # echo "VERSION_NAME=$VERSION_NAME" >> $GITHUB_ENV # flutter build ipa --no-codesign # - name: Export IPA from .xcarchive # run: | # xcodebuild -exportArchive \ # -archivePath build/ios/archive/Runner.xcarchive \ # -exportOptionsPlist ios/exportOptions.plist \ # -exportPath build/ios/ipa # - name: Archive iOS IPA artifact # uses: actions/upload-artifact@v4.0.0 # with: # name: ios-${{ env.VERSION_NAME }} # path: build/ios/ipa/*.ipa build-macos: runs-on: macos-latest steps: - name: Checkout repository uses: actions/checkout@v4.1.1 - name: Set up Flutter uses: subosito/flutter-action@v2.16.0 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: | APP_NAME=$(grep '^name:' pubspec.yaml | cut -d ':' -f2 | tr -d ' ') VERSION_NAME=$(grep '^version:' pubspec.yaml | cut -d ':' -f2 | cut -d '+' -f1 | tr -d ' ') echo "APP_NAME=$APP_NAME" >> $GITHUB_ENV echo "VERSION_NAME=$VERSION_NAME" >> $GITHUB_ENV flutter build macos - name: Create DMG file run: | hdiutil create -format UDZO -srcfolder build/macos/Build/Products/Release/fladder.app build/macos/Build/Products/Release/fladder.dmg - name: Archive macOS artifact uses: actions/upload-artifact@v4.0.0 with: name: ${{ env.APP_NAME }}-macOS-${{ env.VERSION_NAME }} path: build/macos/Build/Products/Release/fladder.dmg # build-linux: # runs-on: ubuntu-latest # steps: # - name: Checkout repository # uses: actions/checkout@v4.1.1 # - name: Set up Flutter # uses: subosito/flutter-action@v2.16.0 # 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 # - name: Build Linux app # run: flutter build linux # - name: Archive Linux artifact # uses: actions/upload-artifact@v2 # with: # name: linux # path: build/linux/x64/release/bundle build-web: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v4.1.1 - name: Set up Flutter uses: subosito/flutter-action@v2.16.0 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: | APP_NAME=$(grep '^name:' pubspec.yaml | cut -d ':' -f2 | tr -d ' ') VERSION_NAME=$(grep '^version:' pubspec.yaml | cut -d ':' -f2 | cut -d '+' -f1 | tr -d ' ') echo "APP_NAME=$APP_NAME" >> $GITHUB_ENV echo "VERSION_NAME=$VERSION_NAME" >> $GITHUB_ENV flutter build web - name: Archive web artifact uses: actions/upload-artifact@v4.0.0 with: name: ${{ env.APP_NAME }}-Web-${{ env.VERSION_NAME }} path: build/web