Skip to main content

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

JobPurposeWhen it runs
docs-scopeDetect docs-only changesAlways
changed-scopeDetect which areas changed (node/macos/android)Non-docs PRs
checkTypeScript types, lint, formatNon-docs changes
check-docsMarkdown lint + broken link checkDocs changed
code-analysisLOC threshold check (1000 lines)PRs only
secretsDetect leaked secretsAlways
build-artifactsBuild dist once, share with other jobsNon-docs, node changes
release-checkValidate npm pack contentsAfter build
checksNode/Bun tests + protocol checkNon-docs, node changes
checks-windowsWindows-specific testsNon-docs, node changes
macosSwift lint/build/test + TS testsPRs with macos changes
androidGradle build + testsNon-docs, android changes

Fail-Fast Order

Jobs are ordered so cheap checks fail before expensive ones run:
  1. docs-scope + code-analysis + check (parallel, ~1-2 min)
  2. build-artifacts (blocked on above)
  3. checks, checks-windows, macos, android (blocked on build)

Runners

RunnerJobs
blacksmith-4vcpu-ubuntu-2404Most Linux jobs
blacksmith-4vcpu-windows-2025checks-windows
macos-latestmacos, ios
ubuntu-latestScope detection (lightweight)

Local Equivalents

pnpm check          # types + lint + format
pnpm test           # vitest tests
pnpm check:docs     # docs format + lint + broken links
pnpm release:check  # validate npm pack