Skip to content

CI 流水线

CI 在每次推送到 main 分支以及每个 Pull Request 时运行。它使用智能作用域检测,当只有不相关区域发生变更时跳过昂贵的作业。

作业总览

作业用途运行时机
preflight文档作用域、变更作用域、密钥扫描、工作流审计、生产依赖审计始终运行;node 审计仅在非文档变更时运行
docs-scope检测是否仅文档变更始终运行
changed-scope检测哪些区域发生变更(node/macos/android/windows)非文档变更时运行
checkTypeScript 类型检查、lint、格式化非文档、node 变更时运行
check-docsMarkdown lint + 死链检查文档变更时运行
secrets检测泄露的密钥始终运行
build-artifacts构建一次 dist,与 release-check 共享推送到 main、node 变更时运行
release-check验证 npm pack 内容推送到 main 且构建完成后运行
checksPR 时 Node 测试 + 协议检查;push 时 Bun 兼容性检查非文档、node 变更时运行
compat-node22最低支持的 Node 运行时兼容性验证推送到 main、node 变更时运行
checks-windowsWindows 专项测试非文档、与 windows 相关的变更时运行
macosSwift lint/build/test + TS 测试PR 有 macos 变更时运行
androidGradle 构建 + 测试非文档、android 变更时运行

快速失败顺序

作业按"廉价检查先失败,昂贵作业后运行"的顺序排列:

  1. docs-scope + changed-scope + check + secrets(并行,廉价门控优先)
  2. PR:checks(Linux Node 测试拆成 2 个分片)、checks-windowsmacosandroid
  3. 推送到 mainbuild-artifacts + release-check + Bun 兼容性 + compat-node22

作用域逻辑位于 scripts/ci-changed-scope.mjs,并有 src/scripts/ci-changed-scope.test.ts 中的单元测试覆盖。 同一共享作用域模块还通过更窄的 changed-smoke 门控驱动独立的 install-smoke 工作流,因此 Docker/安装冒烟测试只在安装、打包和容器相关变更时运行。

运行器

运行器作业
blacksmith-16vcpu-ubuntu-2404大多数 Linux 作业,包括作用域检测
blacksmith-32vcpu-windows-2025checks-windows
macos-latestmacosios

本地等效命令

在"养龙虾"的本地开发环境中,可用以下命令模拟 CI 检查:

bash
pnpm check          # 类型 + lint + 格式化
pnpm test           # vitest 测试
pnpm check:docs     # 文档格式 + lint + 死链
pnpm release:check  # 验证 npm pack