name: CI on: push: branches: [ master ] paths: - 'lib/**' - 'assets/**' - 'test/**' - 'android/**' - 'pubspec.yaml' - 'pubspec.lock' - '.gitea/workflows/**' pull_request: branches: [ master ] workflow_dispatch: # Same self-hosted runner shape as android-stuff (halogen, host mode, label # flutter-android): the toolchain on the host is the one that verified the # release, and nothing installs per run. Host mode is also what keeps Gradle and # pub caches warm between runs. jobs: analyze: name: Analyze & Test runs-on: flutter-android steps: - uses: actions/checkout@v4 - name: Toolchain run: | flutter --version echo "ANDROID_HOME=${ANDROID_HOME:?not set on this runner}" flutter-android-preflight . - name: Get dependencies run: flutter pub get - name: Analyze run: flutter analyze - name: Test run: flutter test apk: name: Debug APK runs-on: flutter-android needs: [analyze] if: github.event_name == 'push' || github.event_name == 'workflow_dispatch' steps: - uses: actions/checkout@v4 - name: Get dependencies run: flutter pub get # Debug-signed: this is a side-loaded in-car display, not a store release. - name: Build APK run: flutter build apk --debug - uses: actions/upload-artifact@v4 with: name: yukart-display-debug-apk path: build/app/outputs/flutter-apk/app-debug.apk if-no-files-found: error