Skip to content

chore(deps): bump @aws-sdk/client-s3 from 3.1101.0 to 3.1106.0 #147

chore(deps): bump @aws-sdk/client-s3 from 3.1101.0 to 3.1106.0

chore(deps): bump @aws-sdk/client-s3 from 3.1101.0 to 3.1106.0 #147

Workflow file for this run

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