OpenClaw CIパイプラインの最適化:ビルド時間を短縮する方法
CI/CDパイプラインの構築や管理において、変更のたびにすべてのテストが実行されるのを待つのは、開発者にとって大きなストレスですよね。特に大規模なプロジェクトでは、無関係な箇所の変更でビルド時間が浪費されるのを防ぐ仕組みが不可欠です。
OpenClawのCIパイプラインは、スマートなスコープ判定機能を備えており、変更内容に応じて必要なジョブだけを効率的に実行します。これにより、開発者はフィードバックを素早く受け取り、本来のコーディング作業に集中できるようになります。
ジョブの概要
Section titled “ジョブの概要”このセクションでは、各ジョブの目的と実行タイミングを一覧で紹介します。
| ジョブ | 目的 | 実行タイミング |
|---|---|---|
preflight | ドキュメントのみの変更、変更スコープ、拡張機能の変更を検出し、CIマニフェストをビルドします | ドラフト以外のプッシュおよびPRで常に実行 |
security-scm-fast | zizmorによる秘密鍵の検出とワークフロー監査 | ドラフト以外のプッシュおよびPRで常に実行 |
security-dependency-audit | npmアドバイザリに対する依存関係のないプロダクションロックファイルの監査 | ドラフト以外のプッシュおよびPRで常に実行 |
security-fast | 高速なセキュリティジョブのための必須集計 | ドラフト以外のプッシュおよびPRで常に実行 |
build-artifacts | dist/とControl UIを一度ビルドし、後続ジョブ用に再利用可能なアーティファクトをアップロード | Node.js関連の変更時 |
checks-fast-core | バンドル/プラグインコントラクト/プロトコルチェックなどの高速なLinux正当性レーン | Node.js関連の変更時 |
checks-fast-contracts-channels | 安定した集計結果を持つシャード化されたチャネルコントラクトチェック | Node.js関連の変更時 |
checks-node-extensions | 拡張機能スイート全体のフルバンドルプラグインテストシャード | Node.js関連の変更時 |
checks-node-core-test | チャネル、バンドル、コントラクト、拡張機能レーンを除くコアNode.jsテストシャード | Node.js関連の変更時 |
extension-fast | 変更されたバンドルプラグインのみを対象とした集中テスト | 拡張機能の変更検出時 |
check | シャード化されたメインのローカルゲート相当:プロダクション型定義、lint、ガード、テスト型定義、厳格なスモークテスト | Node.js関連の変更時 |
check-additional | アーキテクチャ、境界、拡張機能表面のガード、パッケージ境界、およびGateway監視シャード | Node.js関連の変更時 |
build-smoke | ビルド済みCLIスモークテストおよび起動メモリのスモークテスト | Node.js関連の変更時 |
checks | 残りのLinux Node.jsレーン:チャネルテストおよびプッシュ時のみのNode.js 22互換性チェック | Node.js関連の変更時 |
check-docs | ドキュメントのフォーマット、lint、リンク切れチェック | ドキュメント変更時 |
skills-python | PythonベースのスキルのためのRuff + pytest | Pythonスキル関連の変更時 |
checks-windows | Windows固有のテストレーン | Windows関連の変更時 |
macos-node | 共有ビルド済みアーティファクトを使用したmacOS TypeScriptテストレーン | macOS関連の変更時 |
macos-swift | macOSアプリ用のSwift lint、ビルド、テスト | macOS関連の変更時 |
android | Androidビルドおよびテストマトリックス | Android関連の変更時 |
フェイルファスト(Fail-Fast)順序
Section titled “フェイルファスト(Fail-Fast)順序”コストの高いチェックを実行する前に、安価なチェックで失敗を早期に検出するようにジョブが順序付けられています。
preflightがどのレーンが存在するかを決定します。docs-scopeおよびchanged-scopeのロジックは、独立したジョブではなく、このジョブ内のステップとして実行されます。security-scm-fast、security-dependency-audit、security-fast、check、check-additional、check-docs、およびskills-pythonは、重いアーティファクトやプラットフォームマトリックスジョブを待たずに迅速に失敗を報告します。build-artifactsは高速なLinuxレーンと並行して実行されるため、共有ビルドが準備でき次第、後続のコンシューマーが開始できます。- その後、より重いプラットフォームおよびランタイムレーンが展開されます:
checks-fast-core、checks-fast-contracts-channels、checks-node-extensions、checks-node-core-test、extension-fast、checks、checks-windows、macos-node、macos-swift、およびandroid。
スコープロジックはscripts/ci-changed-scope.mjsに存在し、src/scripts/ci-changed-scope.test.tsのユニットテストでカバーされています。
個別のinstall-smokeワークフローは、独自のpreflightジョブを通じて同じスコープスクリプトを再利用します。これはrun_install_smokeをより狭いchanged-smokeシグナルから計算するため、Docker/インストールスモークはインストール、パッケージング、コンテナ関連の変更に対してのみ実行されます。
ローカルのchanged-laneロジックはscripts/changed-lanes.mjsにあり、scripts/check-changed.mjsによって実行されます。そのローカルゲートは、広範なCIプラットフォームスコープよりもアーキテクチャ境界に対して厳格です。コアプロダクションの変更はコアプロダクションの型チェックとコアテストを実行し、コアテストのみの変更はコアテストの型チェックとテストのみを実行します。拡張機能のプロダクション変更は拡張機能のプロダクション型チェックと拡張機能テストを実行し、拡張機能テストのみの変更は拡張機能テストの型チェックとテストのみを実行します。パブリックプラグインAPIまたはプラグインコントラクトの変更は、拡張機能がそれらのコアコントラクトに依存しているため、拡張機能の検証まで拡大されます。不明なルート/設定の変更は、安全側に倒してすべてのレーンを実行します。
プッシュ時には、checksマトリックスにプッシュ専用のcompat-node22レーンが追加されます。プルリクエストではそのレーンはスキップされ、マトリックスは通常のテスト/チャネルレーンに集中します。
最も低速なNode.jsテストファミリーは、各ジョブが小さく保たれるようにインクルードファイルシャードに分割されています。チャネルコントラクトはレジストリとコアカバレッジをそれぞれ8つの重み付けされたシャードに分割し、自動返信コマンドテストは4つのインクルードパターンシャードに分割され、その他の大きな自動返信プレフィックスグループはそれぞれ2つのシャードに分割されます。check-additionalも、パッケージ境界のコンパイル/カナリア作業と、ランタイムトポロジのGateway/アーキテクチャ作業を分離しています。
GitHubは、同じPRまたはmain参照に新しいプッシュが行われた際、古いジョブをcancelledとマークすることがあります。同じ参照に対する最新の実行も失敗していない限り、これはCIのノイズとして扱ってください。集計シャードチェックでは、テスト失敗と区別しやすいように、このキャンセルケースが明示的に呼び出されます。
各ジョブを実行するランナー環境は以下の通りです。
| ランナー | ジョブ |
|---|---|
blacksmith-16vcpu-ubuntu-2404 | preflight, security-scm-fast, security-dependency-audit, security-fast, build-artifacts, Linux checks, docs checks, Python skills, android |
blacksmith-32vcpu-windows-2025 | checks-windows |
macos-latest | macos-node, macos-swift |
ローカルでの実行方法
Section titled “ローカルでの実行方法”CIで実行される内容をローカルで再現するためのコマンドです。
pnpm changed:lanes # inspect the local changed-lane classifier for origin/main...HEADpnpm check:changed # smart local gate: changed typecheck/lint/tests by boundary lanepnpm check # fast local gate: production tsgo + sharded lint + parallel fast guardspnpm check:test-typespnpm check:timed # same gate with per-stage timingspnpm build:strict-smokepnpm check:architecturepnpm test:gateway:watch-regressionpnpm test # vitest testspnpm test:channelspnpm test:contracts:channelspnpm check:docs # docs format + lint + broken linkspnpm build # build dist when CI artifact/build-smoke lanes matter関連ドキュメント
Section titled “関連ドキュメント”設定やトラブルシューティングについては、AI Setup Assistantをご活用ください。
OpenClaw Expert
まだ解決しませんか?
このページで解決しない場合は、OpenClaw Expertに直接質問してください。