CI 流水線

CI 會在每次推送到 main 和每個 Pull Request 時執行。它透過智慧範圍偵測來跳過代價高昂的工作——當只有不相關的區域有變動時,就不跑那些任務。

工作總覽

工作用途執行時機
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 測試 + protocol 檢查;推送時跑 Bun 相容測試非文件變動,且 node 有改動
compat-node22最低支援 Node 執行環境的相容性測試推送到 main,且 node 有改動
checks-windowsWindows 專屬測試非文件變動,且有 windows 相關改動
macosSwift lint/build/test + TS 測試PR 有 macos 改動時
androidGradle build + 測試非文件變動,且 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 的單元測試覆蓋。

執行器

執行器對應工作
blacksmith-16vcpu-ubuntu-2404多數 Linux 工作,包含範圍偵測
blacksmith-32vcpu-windows-2025checks-windows
macos-latestmacosios

本機等效指令

pnpm check          # 型別 + lint + 格式
pnpm test           # vitest 測試
pnpm check:docs     # 文件格式 + lint + 連結檢查
pnpm release:check  # 驗證 npm pack