diff --git a/.github/workflows/dart-sdk-validation.yaml b/.github/workflows/dart-sdk-validation.yaml index cdcdfc4bf..774b9d877 100644 --- a/.github/workflows/dart-sdk-validation.yaml +++ b/.github/workflows/dart-sdk-validation.yaml @@ -13,7 +13,50 @@ concurrency: cancel-in-progress: true jobs: + openapi-drift: + name: Detect OpenAPI schema drift + runs-on: ubuntu-24.04 + timeout-minutes: 15 + steps: + - name: Checkout fluxer + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 + with: + persist-credentials: false + + - name: Set up Rust toolchain (CI helpers) + uses: dtolnay/rust-toolchain@e97e2d8cc328f1b50210efc529dca0028893a2d9 + with: + toolchain: "1.93.0" + + - name: Install pnpm + uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 + + - name: Install Node.js + uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e + with: + node-version: '24' + cache: 'pnpm' + + - name: Install dependencies + run: >- + cargo run --locked --quiet --manifest-path tools/ci/Cargo.toml -- ci + --step install_dependencies + + - name: Generate OpenAPI schemas + run: pnpm openapi:generate + + - name: Validate OpenAPI schemas + run: pnpm openapi:validate + + - name: Check drift of OpenAPI schemas + run: | + if ! git diff --exit-code -- fluxer_api/src/api/openapi/openapi.json fluxer_admin/openapi-admin.json; then + echo "::error::OpenAPI schemas are outdated." + exit 1 + fi + validate: + name: Validate Dart SDK generation runs-on: ubuntu-latest steps: - name: Check changed files