# CI for Tanemaki. Mirrors the local verification gate (analyze + test + # coverage) from docs/design/testing.md. Adapt to GitHub Actions if the # canonical remote changes; the commands are the same. # # Uses the official Flutter Docker image. Pin the version to match the # developer toolchain (Flutter 3.41.x / Dart 3.11.x). image: ghcr.io/cirruslabs/flutter:3.41.9 stages: - analyze - test variables: PUB_CACHE: "$CI_PROJECT_DIR/.pub-cache" cache: key: "$CI_COMMIT_REF_SLUG" paths: - .pub-cache/ before_script: # SQLCipher so the "no plaintext at rest" security test actually runs (it # skips where the library is absent). The -dev package ships the unversioned # libsqlcipher.so symlink, which package:sqlite3 loads reliably. - apt-get update -qq && apt-get install -y -qq libsqlcipher-dev - flutter --version - flutter pub get analyze: stage: analyze script: - dart format --output=none --set-exit-if-changed . - flutter analyze test:commons_core: stage: test script: - cd packages/commons_core - dart test test:app_seeds: stage: test script: - cd apps/app_seeds # slang is generated via its CLI (disabled in build_runner); Drift via build_runner. - dart run slang - dart run build_runner build --delete-conflicting-outputs - flutter test --coverage coverage: '/lines\.*: \d+\.\d+\%/' artifacts: paths: - apps/app_seeds/coverage/lcov.info reports: coverage_report: coverage_format: cobertura path: apps/app_seeds/coverage/cobertura.xml