概要
差分ビルドを有効にする
仕組み
1. 親ビルドを見つける
success または partial) を探します。条件を満たす親がない場合、ビルドは自動的にフルビルドに切り替わります。
2. ブループリントを比較する
3. ワークスペースのアクションを割り当てる
| Action | 内容 | 使用するタイミング |
|---|---|---|
| Rebuild | リポジトリをクローンし、すべてのブループリントのステップ (initialize + maintenance) を最初から実行する | 親のビルド以降にブループリントが変更された場合 |
| Inherit | 最新のコードを取得し、maintenance ステップのみを実行する | ブループリントに変更がない場合 — 親のセットアップを再利用する |
| Remove | スナップショットからワークスペースを削除する | ワークスペースが構成から削除された場合 |
継承されたワークスペースでは、
initialize は再実行されません。maintenance は、
最新のコードを取得したあとでも単独で実行できるよう、自己完結した形で記述してください。
親のスナップショットにすでにインストールされているツールやランタイムは利用できますが、
その直前に initialize が実行されていることを前提にしたり、以前 initialize が
$ENVRC に書き込んだ環境変数に依存したりしてはいけません。4. ビルドを実行する
- 継承されたワークスペース では、必要なツール、ランタイム、依存関係はすでにインストールされています。システムは最新のコードを取得し (
git pull) 、依存関係を更新するためにmaintenanceコマンドを実行します。 - 再ビルドされるワークスペース は最初からセットアップされ、新たにクローンされたうえで、
initialize+maintenanceの一連の処理がすべて実行されます。 - 削除されたワークスペース では、対応するディレクトリがクリーンアップされます。
initialize をスキップし (それらのツールはすでに親イメージに含まれているため) 、maintenance のみを実行します。
$ENVRC は、差分ビルドを含むすべてのビルドの開始時にリセットされます。
以前のビルドで $ENVRC に書き込まれた環境変数や PATH
エントリは引き継がれません。maintenance でそれらが必要な場合は、
maintenance 側で設定する必要があります。フルビルドが実行されるケース
- 親ビルドが存在しない — 初回ビルドであるか、過去のビルドがすべて失敗している
- 組織またはEnterpriseブループリントが変更された — グローバルな変更はすべてのワークスペースに影響するため、クリーンな再ビルドのほうが安全です
- リポジトリの順序が変更された — リポジトリ同士でセットアップに依存関係がある場合があるため、順序を変更するとフル再ビルドがトリガーされます
- 親ビルドが古すぎる、または互換性がない — システムは親ビルドが適切かどうかを検証します
build の種類を確認する
- Settings > Environment > Snapshots に移動します
- 履歴内の build をクリックします
- Build kind バッジに Differential (青) または Full build (デフォルト) が表示されます
- Differential: 「変更されたワークスペースのみが再ビルドされ、変更されていないものは同じ設定で最後に成功した build から引き継がれます」
- Full build: 「すべてのワークスペースが最初からビルドされます」
利点
| 利点 | 説明 |
|---|---|
| ビルドの高速化 | 変更されたワークスペースのみが完全なセットアップ処理の対象になります。継承されたワークスペースでは、initialize は完全にスキップされます。 |
| ネットワーク使用量の削減 | 変更のないワークスペースでは、ツール、ランタイム、大容量の依存関係を再ダウンロードする必要がありません。 |
| 反復作業の高速化 | 1 つのリポジトリのブループリントを繰り返し調整しても、ほかのリポジトリがビルドの足かせになることはありません。 |
| 同等の信頼性 | 問題があると判断された場合、システムは自動的にフルビルドにフォールバックします。必要に応じて、いつでも手動でフルビルドをトリガーすることもできます。 |
フルビルドを手動でトリガーする
initializeステップとmaintenanceステップが再実行されます。
よくある質問
差分ビルドを有効にすると、セッションに影響しますか?
差分ビルドを有効にすると、セッションに影響しますか?
いいえ。セッションはビルド方法にかかわらず、常に最終スナップショットから起動します。違いはビルド速度だけです。
差分ビルドで問題のあるスナップショットが生成された場合はどうなりますか?
差分ビルドで問題のあるスナップショットが生成された場合はどうなりますか?
Settings > Environment > Snapshots で以前の正常なビルドをピン留めし、その後フルビルドをトリガーしてクリーンなスナップショットを取得してください。差分ビルドを完全に無効にして、フルビルドに戻すこともできます。
部分ビルドは親として扱われますか?
部分ビルドは親として扱われますか?
はい。ステータスが
partial のビルド (一部のワークスペースは成功し、一部は失敗した状態) も親として使用できます。親で成功したワークスペースからのみ継承されます。
