コンテンツにスキップ

OpenClaw CIパイプラインの最適化:ビルド時間を短縮する方法

CI/CDパイプラインの構築や管理において、変更のたびにすべてのテストが実行されるのを待つのは、開発者にとって大きなストレスですよね。特に大規模なプロジェクトでは、無関係な箇所の変更でビルド時間が浪費されるのを防ぐ仕組みが不可欠です。

OpenClawのCIパイプラインは、スマートなスコープ判定機能を備えており、変更内容に応じて必要なジョブだけを効率的に実行します。これにより、開発者はフィードバックを素早く受け取り、本来のコーディング作業に集中できるようになります。

このセクションでは、各ジョブの目的と実行タイミングを一覧で紹介します。

ジョブ目的実行タイミング
preflightドキュメントのみの変更、変更スコープ、拡張機能の変更を検出し、CIマニフェストをビルドしますドラフト以外のプッシュおよびPRで常に実行
security-scm-fastzizmorによる秘密鍵の検出とワークフロー監査ドラフト以外のプッシュおよびPRで常に実行
security-dependency-auditnpmアドバイザリに対する依存関係のないプロダクションロックファイルの監査ドラフト以外のプッシュおよびPRで常に実行
security-fast高速なセキュリティジョブのための必須集計ドラフト以外のプッシュおよびPRで常に実行
build-artifactsdist/と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-pythonPythonベースのスキルのためのRuff + pytestPythonスキル関連の変更時
checks-windowsWindows固有のテストレーンWindows関連の変更時
macos-node共有ビルド済みアーティファクトを使用したmacOS TypeScriptテストレーンmacOS関連の変更時
macos-swiftmacOSアプリ用のSwift lint、ビルド、テストmacOS関連の変更時
androidAndroidビルドおよびテストマトリックスAndroid関連の変更時

フェイルファスト(Fail-Fast)順序

Section titled “フェイルファスト(Fail-Fast)順序”

コストの高いチェックを実行する前に、安価なチェックで失敗を早期に検出するようにジョブが順序付けられています。

  1. preflightがどのレーンが存在するかを決定します。docs-scopeおよびchanged-scopeのロジックは、独立したジョブではなく、このジョブ内のステップとして実行されます。
  2. security-scm-fast、security-dependency-audit、security-fast、check、check-additional、check-docs、およびskills-pythonは、重いアーティファクトやプラットフォームマトリックスジョブを待たずに迅速に失敗を報告します。
  3. build-artifactsは高速なLinuxレーンと並行して実行されるため、共有ビルドが準備でき次第、後続のコンシューマーが開始できます。
  4. その後、より重いプラットフォームおよびランタイムレーンが展開されます: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-2404preflight, security-scm-fast, security-dependency-audit, security-fast, build-artifacts, Linux checks, docs checks, Python skills, android
blacksmith-32vcpu-windows-2025checks-windows
macos-latestmacos-node, macos-swift

CIで実行される内容をローカルで再現するためのコマンドです。

Terminal window
pnpm changed:lanes # inspect the local changed-lane classifier for origin/main...HEAD
pnpm check:changed # smart local gate: changed typecheck/lint/tests by boundary lane
pnpm check # fast local gate: production tsgo + sharded lint + parallel fast guards
pnpm check:test-types
pnpm check:timed # same gate with per-stage timings
pnpm build:strict-smoke
pnpm check:architecture
pnpm test:gateway:watch-regression
pnpm test # vitest tests
pnpm test:channels
pnpm test:contracts:channels
pnpm check:docs # docs format + lint + broken links
pnpm build # build dist when CI artifact/build-smoke lanes matter

設定やトラブルシューティングについては、AI Setup Assistantをご活用ください。

OpenClaw

OpenClaw Expert

まだ解決しませんか?

このページで解決しない場合は、OpenClaw Expertに直接質問してください。