OpenClaw从入门到应用——CI流水线
通过OpenClaw实现副业收入:《OpenClaw赚钱实录:从“养龙虾“到可持续变现的实践指南》
OpenClaw CI 流水线的工作原理
CI 流水线
CI(持续集成)会在每次向main分支推送代码以及每个拉取请求(Pull Request)时自动运行。它采用智能作用域检测机制,当仅发生无关区域的变更时,会自动跳过开销较大的任务,以节省资源并提高效率。
任务概览
| 任务 | 用途 | 运行时机 |
|---|---|---|
docs-scope | 检测是否仅有文档发生变更 | 始终运行 |
changed-scope | 检测具体哪些区域发生了变更(node/macos/android/windows) | 非文档类变更时运行 |
check | TypeScript 类型检查、代码规范检查(lint)、格式化检查 | 非文档变更且涉及 node 变更时运行 |
check-docs | Markdown 规范检查 + 失效链接检测 | 文档发生变更时运行 |
secrets | 检测是否存在泄露的密钥或敏感信息 | 始终运行 |
build-artifacts | 构建一次分发产物(dist),并与release-check共享 | 向main推送代码或涉及 node 变更时运行 |
release-check | 验证 npm 打包内容的完整性与正确性 | 向main推送代码且在构建完成后运行 |
checks | PR 上运行 Node 测试 + 协议检查;推送时运行 Bun 兼容性测试 | 非文档变更且涉及 node 变更时运行 |
compat-node22 | 最低支持的 Node 运行时兼容性测试 | 向main推送代码或涉及 node 变更时运行 |
checks-windows | Windows 平台专属测试 | 非文档变更且涉及 Windows 相关变更时运行 |
macos | Swift 代码规范检查/构建/测试 + TypeScript 测试 | PR 中包含 macos 相关变更时运行 |
android | Gradle 构建 + 测试 | 非文档变更且涉及 android 变更时运行 |
补充说明:上述任务名称均为 CI 配置文件中的实际 Job ID,在执行日志和状态检查中会直接显示这些标识符。理解每个任务的触发条件有助于开发者在提交代码前预判 CI 的执行范围。
快速失败顺序
任务的执行顺序经过精心设计,确保开销较小的检查优先执行,以便在运行耗时较长的任务之前尽早发现问题(即“快速失败”原则):
docs-scope+changed-scope+check+secrets(并行执行,作为低成本的初步门禁)- 针对拉取请求(PR):
checks(Linux Node 测试拆分为 2 个分片并行执行)、checks-windows、macos、android - 针对向
main分支的推送:build-artifacts+release-check+ Bun 兼容性测试 +compat-node22
作用域检测逻辑位于 scripts/ci-changed-scope.mjs 文件中,并由 src/scripts/ci-changed-scope.test.ts 中的单元测试提供覆盖保障。
补充说明:“快速失败”是 CI/CD 的核心最佳实践之一。通过将轻量级静态分析和作用域判断前置,可以避免在明显的代码规范错误或无关变更上浪费昂贵的计算资源和开发者等待时间。分片(sharding)测试则是为了进一步缩短反馈周期,将大型测试套件拆分到多个并行实例中执行。
运行器环境
| 运行器 | 承载的任务 |
|---|---|
blacksmith-16vcpu-ubuntu-2404 | 大多数 Linux 任务,包括作用域检测 |
blacksmith-32vcpu-windows-2025 | checks-windows |
macos-latest | macos、ios |
补充说明:运行器(Runner)是 CI 任务的实际执行载体。不同平台和高性能规格的虚拟机被分配给对应的任务,以确保跨平台兼容性和构建性能。例如,Windows 专属测试必须在 Windows 运行器上执行,而 macOS/iOS 相关任务则依赖 Apple 生态的运行环境。
本地等效命令
以下命令可在本地开发环境中模拟 CI 的各项检查,建议在提交代码前先行验证:
pnpmcheck# 类型检查 + 代码规范检查 + 格式化检查pnpmtest# vitest 单元测试pnpmcheck:docs# 文档格式化 + 规范检查 + 失效链接检测pnpmrelease:check# 验证 npm 打包内容补充说明:保持本地开发与 CI 环境的一致性至关重要。以上命令与 CI 流水线中的对应任务使用相同的工具链和配置,开发者应在本地通过这些检查后再推送代码,以减少 CI 失败次数并加快合并流程。若本地缺少某些依赖导致命令无法执行,请先运行
pnpm install安装项目依赖。
