CI Pipeline
CI Pipeline
The CI runs on every push to main and every pull request. It uses smart scoping to skip expensive jobs when only docs or native code changed.
Job Overview
| Job | Purpose | When it runs |
|---|---|---|
docs-scope | Detect docs-only changes | Always |
changed-scope | Detect which areas changed (node/macos/android) | Non-docs PRs |
check | TypeScript types, lint, format | Non-docs changes |
check-docs | Markdown lint + broken link check | Docs changed |
code-analysis | LOC threshold check (1000 lines) | PRs only |
secrets | Detect leaked secrets | Always |
build-artifacts | Build dist once, share with other jobs | Non-docs, node changes |
release-check | Validate npm pack contents | After build |
checks | Node/Bun tests + protocol check | Non-docs, node changes |
checks-windows | Windows-specific tests | Non-docs, node changes |
macos | Swift lint/build/test + TS tests | PRs with macos changes |
android | Gradle build + tests | Non-docs, android changes |
Fail-Fast Order
Jobs are ordered so cheap checks fail before expensive ones run:
docs-scope+code-analysis+check(parallel, ~1-2 min)build-artifacts(blocked on above)checks,checks-windows,macos,android(blocked on build)
Runners
| Runner | Jobs |
|---|---|
blacksmith-16vcpu-ubuntu-2404 | Most Linux jobs, including scope detection |
blacksmith-16vcpu-windows-2025 | checks-windows |
macos-latest | macos, ios |
Local Equivalents
pnpm check # types + lint + formatpnpm test # vitest testspnpm check:docs # docs format + lint + broken linkspnpm release:check # validate npm pack