From 21651956826389321391f6a1a1559129c93d8294 Mon Sep 17 00:00:00 2001 From: Harrys76 Date: Thu, 27 Aug 2026 09:38:59 +0700 Subject: [PATCH 1/4] ci: add Flutter quality gates --- .github/workflows/flutter-ci.yml | 87 ++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 .github/workflows/flutter-ci.yml diff --git a/.github/workflows/flutter-ci.yml b/.github/workflows/flutter-ci.yml new file mode 100644 index 00000000..d9bf2c86 --- /dev/null +++ b/.github/workflows/flutter-ci.yml @@ -0,0 +1,87 @@ +name: Flutter CI + +on: + pull_request: + push: + branches: + - main + +permissions: + contents: read + +concurrency: + group: flutter-ci-${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + quality: + name: Flutter quality gate + runs-on: ubuntu-latest + timeout-minutes: 20 + steps: + - name: Check out repository + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + + - name: Set up pinned Flutter channel + uses: subosito/flutter-action@fd55f4c5af5b953cc57a2be44cb082c8f6635e8e # v2.21.0 + with: + channel: stable + flutter-version-file: .fvmrc + cache: true + + - name: Resolve root dependencies + run: flutter pub get --no-example + + - name: Resolve example dependencies + working-directory: example + run: flutter pub get + + - name: Resolve MCP package dependencies + working-directory: packages/sleuth_mcp + run: dart pub get + + - name: Check formatting + run: >- + dart format --output=none --set-exit-if-changed + lib test example/lib + packages/sleuth_mcp/lib packages/sleuth_mcp/test tool + + - name: Analyze + run: flutter analyze + + - name: Test + run: flutter test + + dartdoc: + name: Dartdoc audit + runs-on: ubuntu-latest + timeout-minutes: 10 + continue-on-error: true + steps: + - name: Check out repository + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + + - name: Set up pinned Flutter channel + uses: subosito/flutter-action@fd55f4c5af5b953cc57a2be44cb082c8f6635e8e # v2.21.0 + with: + channel: stable + flutter-version-file: .fvmrc + cache: true + + - name: Resolve root dependencies + run: flutter pub get --no-example + + - name: Resolve example dependencies + working-directory: example + run: flutter pub get + + - name: Resolve MCP package dependencies + working-directory: packages/sleuth_mcp + run: dart pub get + + - name: Generate API documentation without unresolved references + shell: bash + run: | + set -o pipefail + dart doc --dry-run 2>&1 | tee "$RUNNER_TEMP/dartdoc.log" + grep -Fqx "Found 0 warnings and 0 errors." "$RUNNER_TEMP/dartdoc.log" From b2c1f6b4d1940ad54979ca044f5ce137d2fe3866 Mon Sep 17 00:00:00 2001 From: Harrys76 Date: Thu, 27 Aug 2026 13:58:31 +0700 Subject: [PATCH 2/4] ci: resolve Flutter stable channel --- .github/workflows/flutter-ci.yml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/workflows/flutter-ci.yml b/.github/workflows/flutter-ci.yml index d9bf2c86..9a0b6807 100644 --- a/.github/workflows/flutter-ci.yml +++ b/.github/workflows/flutter-ci.yml @@ -22,11 +22,10 @@ jobs: - name: Check out repository uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - - name: Set up pinned Flutter channel + - name: Set up Flutter stable uses: subosito/flutter-action@fd55f4c5af5b953cc57a2be44cb082c8f6635e8e # v2.21.0 with: channel: stable - flutter-version-file: .fvmrc cache: true - name: Resolve root dependencies @@ -61,11 +60,10 @@ jobs: - name: Check out repository uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - - name: Set up pinned Flutter channel + - name: Set up Flutter stable uses: subosito/flutter-action@fd55f4c5af5b953cc57a2be44cb082c8f6635e8e # v2.21.0 with: channel: stable - flutter-version-file: .fvmrc cache: true - name: Resolve root dependencies From feacd3d34b30201bf5bc24687f25252128f7c70d Mon Sep 17 00:00:00 2001 From: Harrys76 Date: Thu, 27 Aug 2026 14:06:24 +0700 Subject: [PATCH 3/4] ci: pin Flutter toolchain --- .fvmrc | 4 ++-- .github/workflows/flutter-ci.yml | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.fvmrc b/.fvmrc index c300356c..c8437d38 100644 --- a/.fvmrc +++ b/.fvmrc @@ -1,3 +1,3 @@ { - "flutter": "stable" -} \ No newline at end of file + "flutter": "3.41.4" +} diff --git a/.github/workflows/flutter-ci.yml b/.github/workflows/flutter-ci.yml index 9a0b6807..21dc3eb9 100644 --- a/.github/workflows/flutter-ci.yml +++ b/.github/workflows/flutter-ci.yml @@ -22,10 +22,10 @@ jobs: - name: Check out repository uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - - name: Set up Flutter stable + - name: Set up pinned Flutter uses: subosito/flutter-action@fd55f4c5af5b953cc57a2be44cb082c8f6635e8e # v2.21.0 with: - channel: stable + flutter-version-file: .fvmrc cache: true - name: Resolve root dependencies @@ -55,15 +55,14 @@ jobs: name: Dartdoc audit runs-on: ubuntu-latest timeout-minutes: 10 - continue-on-error: true steps: - name: Check out repository uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - - name: Set up Flutter stable + - name: Set up pinned Flutter uses: subosito/flutter-action@fd55f4c5af5b953cc57a2be44cb082c8f6635e8e # v2.21.0 with: - channel: stable + flutter-version-file: .fvmrc cache: true - name: Resolve root dependencies @@ -78,6 +77,7 @@ jobs: run: dart pub get - name: Generate API documentation without unresolved references + continue-on-error: true shell: bash run: | set -o pipefail From 023824b8e86a8b861ec4b21c40d550f0bcf4e721 Mon Sep 17 00:00:00 2001 From: Harrys76 Date: Thu, 27 Aug 2026 14:07:25 +0700 Subject: [PATCH 4/4] ci: pass exact Flutter version --- .github/workflows/flutter-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/flutter-ci.yml b/.github/workflows/flutter-ci.yml index 21dc3eb9..b69dce50 100644 --- a/.github/workflows/flutter-ci.yml +++ b/.github/workflows/flutter-ci.yml @@ -25,7 +25,7 @@ jobs: - name: Set up pinned Flutter uses: subosito/flutter-action@fd55f4c5af5b953cc57a2be44cb082c8f6635e8e # v2.21.0 with: - flutter-version-file: .fvmrc + flutter-version: 3.41.4 cache: true - name: Resolve root dependencies @@ -62,7 +62,7 @@ jobs: - name: Set up pinned Flutter uses: subosito/flutter-action@fd55f4c5af5b953cc57a2be44cb082c8f6635e8e # v2.21.0 with: - flutter-version-file: .fvmrc + flutter-version: 3.41.4 cache: true - name: Resolve root dependencies