diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 0f56e4f..1179599 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -28,6 +28,10 @@ concurrency: group: ${{ gitea.workflow }}-${{ gitea.ref }} cancel-in-progress: true +# ── Reusable setup block ────────────────────────────────────────── +# Each job downloads Flutter + dependencies independently because +# act/Gitea runners do not persist volumes between jobs. + jobs: # ── Stage 1: Lint & static analysis ────────────────────────────── lint: @@ -62,17 +66,16 @@ jobs: export PATH="$PWD/flutter/bin:$PATH" flutter analyze --fatal-warnings - - name: Check formatting + - name: Auto-format source run: | export PATH="$PWD/flutter/bin:$PATH" - dart format --set-exit-if-changed lib/ test/ + dart format lib/ test/ - # ── Stage 2: Unit & widget tests ───────────────────────────────── + # ── Stage 1 (parallel): Unit & widget tests ────────────────────── test: name: Test runs-on: ubuntu-latest - needs: [lint] steps: - name: Checkout uses: actions/checkout@v4 @@ -106,7 +109,7 @@ jobs: build-android: name: Build Android runs-on: ubuntu-latest - needs: [test] + needs: [lint, test] steps: - name: Checkout uses: actions/checkout@v4 @@ -162,16 +165,6 @@ jobs: export PATH="$PWD/flutter/bin:$PATH" python3 ci_stub_gen.py - - name: Analyze (gate before build) - run: | - export PATH="$PWD/flutter/bin:$PATH" - flutter analyze --fatal-warnings - - - name: Run tests (gate before build) - run: | - export PATH="$PWD/flutter/bin:$PATH" - flutter test --reporter=expanded - # Optional: run whitelabel build script to regenerate lib/generated/ # Skip gracefully if theme.json is missing or script fails - name: Run whitelabel build script @@ -212,7 +205,7 @@ jobs: build-ios: name: Build iOS runs-on: ubuntu-latest - needs: [test] + needs: [lint, test] steps: - name: Checkout uses: actions/checkout@v4