mirror of
https://github.com/openclaw/openclaw.git
synced 2026-02-19 18:39:20 -05:00
- Fix zh-CN/vps.md broken links (/railway /install/railway) - Add docs/ci.md explaining CI pipeline - Add Experiments group to docs.json navigation
64 lines
3.0 KiB
Markdown
64 lines
3.0 KiB
Markdown
---
|
|
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
|
|
```
|