CI パイプライン
CI は main へのプッシュとすべてのプルリクエストで実行されます。スマートなスコープ判定により、関係のない領域のみが変更された場合はコストの高いジョブをスキップします。
ジョブ一覧
| ジョブ | 目的 | 実行タイミング |
|---|---|---|
docs-scope | ドキュメントのみの変更を検出 | 常時 |
changed-scope | 変更された領域を検出(node/macos/android/windows) | ドキュメント以外の変更時 |
check | TypeScript 型チェック、lint、フォーマット | ドキュメント以外、node の変更時 |
check-docs | Markdown lint + リンク切れチェック | ドキュメントの変更時 |
secrets | シークレットの漏洩検出 | 常時 |
build-artifacts | dist を1回ビルドし release-check と共有 | main へのプッシュ、node の変更時 |
release-check | npm pack の内容を検証 | main へのプッシュ後のビルド完了時 |
checks | PR では Node テスト + プロトコルチェック、push では Bun 互換テスト | ドキュメント以外、node の変更時 |
compat-node22 | サポート最小 Node ランタイムの互換性確認 | main へのプッシュ、node の変更時 |
checks-windows | Windows 固有のテスト | ドキュメント以外、windows 関連の変更時 |
macos | Swift lint/build/test + TS テスト | macOS の変更を含む PR 時 |
android | Gradle ビルド + テスト | ドキュメント以外、android の変更時 |
フェイルファストの順序
コストの安いチェックが先に失敗するよう、ジョブの実行順序が設計されています。
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 でユニットテストされています。
ランナー
| ランナー | ジョブ |
|---|---|
blacksmith-16vcpu-ubuntu-2404 | スコープ検出を含むほとんどの Linux ジョブ |
blacksmith-32vcpu-windows-2025 | checks-windows |
macos-latest | macos、ios |
ローカルでの相当コマンド
pnpm check # 型チェック + lint + フォーマット
pnpm test # vitest テスト
pnpm check:docs # ドキュメントのフォーマット + lint + リンク切れチェック
pnpm release:check # npm pack の検証