name: Check PR on: pull_request: branches: [main] jobs: check: name: Check and test runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 # Match the JDK the release workflows build with, so the release-mode APK # check below faithfully catches what would break a real release. - uses: actions/setup-java@v5 with: distribution: temurin java-version: 21 - uses: subosito/flutter-action@v2 with: flutter-version: 3.44.1 cache: true - run: flutter doctor -v - run: flutter pub get # Fail if committed generated files (*.g.dart) are stale — CI never runs # build_runner otherwise, so forgetting to regenerate after editing a MobX # store or @JsonSerializable model slips past analyze/test/build. - run: dart run build_runner build --delete-conflicting-outputs - name: Verify generated files are up to date run: | if [ -n "$(git status --porcelain)" ]; then echo '::error::Generated files are out of date. Run `dart run build_runner build --delete-conflicting-outputs` and commit the result.' git status --porcelain git diff exit 1 fi - run: flutter analyze - run: flutter test # Release-mode compile check (no signing secrets needed — Android falls back # to debug signing via ALLOW_DEBUG_SIGNED_RELEASE). Catches release-only # breakage that debug builds and tests miss (AOT compile, icon tree-shaking, # plugin/Gradle release incompatibility). - run: flutter build apk --release env: ALLOW_DEBUG_SIGNED_RELEASE: '1'