name: Build on: push: branches: - main - dev pull_request: jobs: android: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-java@v4 with: distribution: "temurin" java-version: "17" - uses: subosito/flutter-action@v2 with: flutter-version: "3.44.1" cache: true - name: Cache Gradle uses: actions/cache@v4 with: path: | ~/.gradle/caches ~/.gradle/wrapper key: ${{ runner.os }}-gradle-${{ hashFiles('android/gradle/wrapper/gradle-wrapper.properties', 'android/build.gradle', 'android/settings.gradle', 'android/app/build.gradle', 'pubspec.lock') }} restore-keys: | ${{ runner.os }}-gradle- - run: flutter pub get - name: Write dart_defines.json env: GIPHY_API_KEY: ${{ secrets.GIPHY_API_KEY }} run: jq -n --arg k "$GIPHY_API_KEY" '{GIPHY_API_KEY:$k}' > dart_defines.json - run: flutter build apk --release --no-pub --dart-define-from-file=dart_defines.json - name: Upload APK uses: actions/upload-artifact@v4 with: name: offband-android-r${{ github.run_number }}-${{ github.event.pull_request.head.sha || github.sha }} path: build/app/outputs/flutter-apk/app-release.apk if-no-files-found: error retention-days: 14 ios: runs-on: macos-latest steps: - uses: actions/checkout@v4 - uses: subosito/flutter-action@v2 with: flutter-version: "3.44.1" cache: true - run: flutter pub get - run: flutter build ios --release --no-codesign --no-pub linux: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: subosito/flutter-action@v2 with: flutter-version: "3.44.1" cache: true - name: Install Linux build deps run: sudo apt-get update && sudo apt-get install -y clang cmake ninja-build pkg-config libgtk-3-dev - run: flutter pub get - name: Write dart_defines.json env: GIPHY_API_KEY: ${{ secrets.GIPHY_API_KEY }} run: jq -n --arg k "$GIPHY_API_KEY" '{GIPHY_API_KEY:$k}' > dart_defines.json - run: flutter build linux --release --no-pub --dart-define-from-file=dart_defines.json - name: Upload Linux bundle uses: actions/upload-artifact@v4 with: name: offband-linux-r${{ github.run_number }}-${{ github.event.pull_request.head.sha || github.sha }} path: build/linux/x64/release/bundle/ if-no-files-found: error retention-days: 14 macos: runs-on: macos-latest steps: - uses: actions/checkout@v4 - uses: subosito/flutter-action@v2 with: flutter-version: "3.44.1" cache: true - run: flutter pub get - run: flutter build macos --release --no-pub web: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: subosito/flutter-action@v2 with: flutter-version: "3.44.1" cache: true - run: flutter pub get - name: Write dart_defines.json env: GIPHY_API_KEY: ${{ secrets.GIPHY_API_KEY }} run: jq -n --arg k "$GIPHY_API_KEY" '{GIPHY_API_KEY:$k}' > dart_defines.json - run: flutter build web --release --no-pub --dart-define-from-file=dart_defines.json - name: Upload web build uses: actions/upload-artifact@v4 with: name: offband-web-r${{ github.run_number }}-${{ github.event.pull_request.head.sha || github.sha }} path: build/web/ if-no-files-found: error retention-days: 14 windows: runs-on: windows-latest steps: - uses: actions/checkout@v4 - uses: subosito/flutter-action@v2 with: flutter-version: "3.44.1" cache: true - run: flutter pub get # Windows runner defaults to PowerShell; jq is not guaranteed there, # so build the JSON with ConvertTo-Json, which escapes correctly. - name: Write dart_defines.json env: GIPHY_API_KEY: ${{ secrets.GIPHY_API_KEY }} run: | @{ GIPHY_API_KEY = $env:GIPHY_API_KEY } | ConvertTo-Json -Compress | Set-Content -Path dart_defines.json -Encoding utf8 -NoNewline - run: flutter build windows --release --no-pub --dart-define-from-file=dart_defines.json - name: Upload Windows build uses: actions/upload-artifact@v4 with: name: offband-windows-r${{ github.run_number }}-${{ github.event.pull_request.head.sha || github.sha }} path: build/windows/x64/runner/Release/ if-no-files-found: error retention-days: 14