Stop running the full pipeline on documentation commits
Docker / build & push image (push) Canceled after 0s
CI / build & test (node 22) (push) Canceled after 0s
CI / build & test (node 24) (push) Canceled after 0s

A README change was building a multi-arch Docker image. Both workflows now
ignore markdown, docs/, demo/, .gitignore and LICENSE. providers/*.json is
deliberately not ignored: CI fails if one stops parsing, which is the one data
change that can break a running gateway.

arm64 is cross-built under QEMU and dominates the Docker job, so it is now only
built for tagged releases; main and PRs build native amd64 only. QEMU setup is
skipped entirely when it is not needed.

Anchors would have kept the paths-ignore lists DRY, but Actions has been
unreliable with them and a broken workflow costs more than five duplicated
lines.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Aryan SinghandClaude Opus 5 committed 2026-08-16 23:44:01 -05:00
1 parent 8180cec073
commit e7b51c6fc9
3 files changed
+35 -1

No files matched your search

+14
View File
@@ -3,7 +3,21 @@ name: CI
on: on:
push: push:
branches: [main] branches: [main]
# Prose cannot break a build. Provider JSON can, so it is NOT ignored —
# the last step here fails if any providers/*.json stops parsing.
paths-ignore:
- '**/*.md'
- 'docs/**'
- 'demo/**'
- '.gitignore'
- 'LICENSE'
pull_request: pull_request:
paths-ignore:
- '**/*.md'
- 'docs/**'
- 'demo/**'
- '.gitignore'
- 'LICENSE'
workflow_dispatch: workflow_dispatch:
concurrency: concurrency:
+17 -1
View File
@@ -4,7 +4,19 @@ on:
push: push:
branches: [main] branches: [main]
tags: ['v*.*.*'] tags: ['v*.*.*']
paths-ignore:
- '**/*.md'
- 'docs/**'
- 'demo/**'
- '.gitignore'
- 'LICENSE'
pull_request: pull_request:
paths-ignore:
- '**/*.md'
- 'docs/**'
- 'demo/**'
- '.gitignore'
- 'LICENSE'
workflow_dispatch: workflow_dispatch:
env: env:
@@ -29,6 +41,8 @@ jobs:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: Set up QEMU - name: Set up QEMU
# Only needed to cross-build arm64, which only tagged releases do.
if: startsWith(github.ref, 'refs/tags/')
uses: docker/setup-qemu-action@v3 uses: docker/setup-qemu-action@v3
- name: Set up Buildx - name: Set up Buildx
@@ -65,7 +79,9 @@ jobs:
uses: docker/build-push-action@v6 uses: docker/build-push-action@v6
with: with:
context: . context: .
platforms: linux/amd64,linux/arm64 # Multi-arch on releases; native-only otherwise, since emulating
# arm64 is most of the build time and nothing consumes it per-commit.
platforms: ${{ startsWith(github.ref, 'refs/tags/') && 'linux/amd64,linux/arm64' || 'linux/amd64' }}
push: ${{ github.event_name != 'pull_request' }} push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.meta.outputs.tags }} tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }} labels: ${{ steps.meta.outputs.labels }}
+4
View File
@@ -486,6 +486,10 @@ gateway flatly refuses to bind one with no keys at all.
## Development ## Development
CI runs on code changes only — a README or `demo/` commit skips it. `[skip ci]`
in a commit message skips it outright, and the arm64 image is only cross-built
for tagged releases, since emulating it is most of the Docker job.
```bash ```bash
./scripts/demo.sh # scripted walkthrough against your providers ./scripts/demo.sh # scripted walkthrough against your providers
node scripts/record-dashboard.mjs # re-record the dashboard GIF node scripts/record-dashboard.mjs # re-record the dashboard GIF