chore(deps): bump @aws-sdk/client-s3 from 3.1101.0 to 3.1106.0 #147
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Interop | |
| on: | |
| pull_request: | |
| workflow_dispatch: | |
| jobs: | |
| # Fast, no-services check: does the gateway's generated OpenAPI surface still | |
| # cover the BBC TAMS operations we claim to implement? Fails on regressions. | |
| coverage: | |
| if: "!contains(github.event.pull_request.title, 'WIP!')" | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v7 | |
| - uses: pnpm/action-setup@v6 | |
| - name: Use Node.js | |
| uses: actions/setup-node@v7 | |
| with: | |
| node-version: '20.x' | |
| cache: 'pnpm' | |
| - name: Install Dependencies | |
| run: pnpm install --frozen-lockfile | |
| - name: Coverage diff vs vendored BBC spec | |
| run: pnpm run interop | |
| # Deep check (hard gate): run the implemented endpoints against the real BBC | |
| # schemas with Schemathesis to verify a third-party TAMS client would | |
| # interoperate. Scoped to response conformance (schema/status/content-type) — | |
| # see scripts/interop-conformance.sh for what is and is not gated. | |
| conformance: | |
| if: "!contains(github.event.pull_request.title, 'WIP!')" | |
| runs-on: ubuntu-latest | |
| env: | |
| DB_URL: http://localhost:5984 | |
| DB_USERNAME: admin | |
| DB_PASSWORD: password | |
| S3_ENDPOINT_URL: http://localhost:9000 | |
| S3_BUCKET: tams | |
| AWS_ACCESS_KEY_ID: minioadmin | |
| AWS_SECRET_ACCESS_KEY: minioadmin | |
| AWS_REGION: eu-north-1 | |
| AWS_DEFAULT_REGION: eu-north-1 | |
| API_TOKEN: interop-token | |
| PORT: '8000' | |
| BASE_URL: http://localhost:8000 | |
| steps: | |
| - uses: actions/checkout@v7 | |
| - uses: pnpm/action-setup@v6 | |
| - name: Use Node.js | |
| uses: actions/setup-node@v7 | |
| with: | |
| node-version: '20.x' | |
| cache: 'pnpm' | |
| - name: Install Dependencies | |
| run: pnpm install --frozen-lockfile | |
| - name: Start CouchDB | |
| run: docker run -d --name couchdb -p 5984:5984 -e COUCHDB_USER=admin -e COUCHDB_PASSWORD=password couchdb:3 | |
| - name: Start MinIO | |
| run: docker run -d --name minio -p 9000:9000 -e MINIO_ROOT_USER=minioadmin -e MINIO_ROOT_PASSWORD=minioadmin minio/minio server /data | |
| - name: Wait for services | |
| run: | | |
| for i in $(seq 1 30); do curl -sf http://localhost:5984/ >/dev/null && break || sleep 2; done | |
| for i in $(seq 1 30); do curl -sf http://localhost:9000/minio/health/live >/dev/null && break || sleep 2; done | |
| - name: Create bucket | |
| run: aws --endpoint-url http://localhost:9000 s3 mb s3://tams | |
| - name: Start gateway | |
| run: | | |
| # Capture the gateway's own stdout/stderr so a crash under load is | |
| # diagnosable instead of surfacing only as a bare "Connection refused" | |
| # from the harness. The log is dumped on failure and uploaded as an | |
| # artifact below. | |
| pnpm start >gateway.log 2>&1 & | |
| echo "GATEWAY_PID=$!" >>"$GITHUB_ENV" | |
| - name: Wait for gateway readiness | |
| run: | | |
| # Gate on /readiness with a bounded retry loop. Fail fast (and surface | |
| # the gateway log) if it never comes up or dies during startup, rather | |
| # than letting the harness run against a dead port. This is a startup | |
| # gate, not a blind retry of the test run: a mid-run death still fails | |
| # the job (see the conformance step + log dump). | |
| for i in $(seq 1 60); do | |
| if curl -sf http://localhost:8000/readiness >/dev/null 2>&1; then | |
| echo "Gateway ready after $((i * 2))s" | |
| exit 0 | |
| fi | |
| if ! kill -0 "$GATEWAY_PID" 2>/dev/null; then | |
| echo "::error::Gateway process exited during startup" | |
| echo "----- gateway.log -----"; cat gateway.log || true | |
| exit 1 | |
| fi | |
| sleep 2 | |
| done | |
| echo "::error::Gateway did not become ready within 120s" | |
| echo "----- gateway.log -----"; cat gateway.log || true | |
| exit 1 | |
| - name: Run Schemathesis conformance | |
| run: pnpm run interop:conformance | |
| - name: Gateway log (on failure) | |
| if: failure() | |
| run: | | |
| echo "----- gateway.log -----" | |
| cat gateway.log || echo "(no gateway.log captured)" | |
| if ! kill -0 "${GATEWAY_PID:-0}" 2>/dev/null; then | |
| echo "::warning::Gateway process is no longer running -- it died during the conformance run (real defect, not a harness flake). See gateway.log above." | |
| fi | |
| - name: Upload gateway log | |
| if: always() | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: conformance-gateway-log | |
| path: gateway.log | |
| if-no-files-found: ignore |