name: OpenAPI on: push: branches: [ main, openapi, '**/openapi' ] pull_request: branches: [ main ] jobs: schema: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Set up Python uses: actions/setup-python@v5 with: python-version: '3.10' - name: Install dependencies run: | python -m pip install --upgrade pip pip install -r requirements.txt - name: Export OpenAPI schema run: | python scripts/export_openapi.py - name: Set up Node for schema tools uses: actions/setup-node@v4 with: node-version: '20' - name: Lint schema with Spectral run: npx -y @stoplight/spectral-cli lint openapi.json - name: Compare with baseline if present run: | if [ -f openapi-baseline.json ]; then \ npx -y openapi-diff --fail-on-changed --fail-on-incompatible openapi-baseline.json openapi.json; \ else \ echo "No baseline file found. Skipping diff."; \ fi - name: Upload schema artifact uses: actions/upload-artifact@v4 with: name: openapi-schema path: openapi.json