概要
差分ビルドを有効にする
1
Environment の設定に移動する
Settings > Environment > Advanced に移動します。
2
トグルを有効にする
Differential builds のトグルをオンにします。説明には次のように表示されます: “変更のないワークスペースを再利用することで、ビルドを高速化します。”
3
ビルドをトリガーする
ブループリントの変更を保存するか、Build snapshot をクリックします。有効な親ビルドが存在する場合、次回のビルドでは差分ビルドの実行が試行されます。
仕組み
1. 親ビルドを見つける
success または partial) を探します。条件を満たす親がない場合、ビルドは自動的にフルビルドに切り替わります。
2. ブループリントを比較する
3. ワークスペースのアクションを割り当てる
継承されたワークスペースでは、
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ステップとmaintenanceステップが再実行されます。
よくある質問
差分ビルドを有効にすると、セッションに影響しますか?
差分ビルドを有効にすると、セッションに影響しますか?
いいえ。セッションはビルド方法にかかわらず、常に最終スナップショットから起動します。違いはビルド速度だけです。
差分ビルドで問題のあるスナップショットが生成された場合はどうなりますか?
差分ビルドで問題のあるスナップショットが生成された場合はどうなりますか?
Settings > Environment > Snapshots で以前の正常なビルドをピン留めし、その後フルビルドをトリガーしてクリーンなスナップショットを取得してください。差分ビルドを完全に無効にして、フルビルドに戻すこともできます。
部分ビルドは親として扱われますか?
部分ビルドは親として扱われますか?
はい。ステータスが
partial のビルド (一部のワークスペースは成功し、一部は失敗した状態) も親として使用できます。親で成功したワークスペースからのみ継承されます。
