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 unrelated areas changed.

Job Overview

Fail-Fast Order

Jobs are ordered so cheap checks fail before expensive ones run:
  1. docs-scope + changed-scope + check + secrets (parallel, cheap gates first)
  2. PRs: checks (Linux Node test split into 2 shards), checks-windows, macos, android
  3. Pushes to main: build-artifacts + release-check + Bun compat + compat-node22
Scope logic lives in scripts/ci-changed-scope.mjs and is covered by unit tests in src/scripts/ci-changed-scope.test.ts. The same shared scope module also drives the separate install-smoke workflow through a narrower changed-smoke gate, so Docker/install smoke only runs for install, packaging, and container-relevant changes.

Runners

Local Equivalents