--- title: CI Pipeline description: How the OpenClaw CI pipeline works --- # 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: 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) ## Code Analysis The `code-analysis` job runs `scripts/analyze_code_files.py` on PRs to enforce code quality: - **LOC threshold**: Files that grow past 1000 lines fail the build - **Delta-only**: Only checks files changed in the PR, not the entire codebase - **Push to main**: Skipped (job passes as no-op) so merges aren't blocked When `--strict` is set, violations block all downstream jobs. This catches bloated files early before expensive tests run. Excluded directories: `node_modules`, `dist`, `vendor`, `.git`, `coverage`, `Swabble`, `skills`, `.pi` ## Runners | Runner | Jobs | | ------------------------------- | ----------------------------- | | `blacksmith-4vcpu-ubuntu-2404` | Most Linux jobs | | `blacksmith-4vcpu-windows-2025` | `checks-windows` | | `macos-latest` | `macos`, `ios` | | `ubuntu-latest` | Scope detection (lightweight) | ## Local Equivalents ```bash pnpm check # types + lint + format pnpm test # vitest tests pnpm check:docs # docs format + lint + broken links pnpm release:check # validate npm pack ```