ビルドチェックアウトディレクトリ
ビルドチェックアウトディレクトリは、TeamCity エージェントマシン上のディレクトリで、特定の VCS ルートからのビルドソースがチェックアウトされます。 ビルド構成が同じ VCS ルートで構成されている場合、このディレクトリは複数のビルド構成間で共有できます。 詳細については、 デフォルトのチェックアウトディレクトリ および カスタムチェックアウトディレクトリ を参照してください。
チェックアウトプロセス
チェックアウトプロセスは、次のように VCS チェックアウトモードの影響を受けます:
エージェント側チェックアウトモードを使用する場合、ビルドエージェントはビルド前にソースをビルドチェックアウトディレクトリにチェックアウトします。
サーバー側チェックアウトモードを使用する場合、TeamCity サーバーは増分パッチをエージェントに送信し、指定されたチェックアウトディレクトリ内で最後のビルド以降に変更されたファイルのみを更新します。
手動チェックアウトモードを使用する場合、ソースはチェックアウトされませんが、ビルドスクリプトを使用してソースをチェックアウトするために、デフォルトのビルドチェックアウトディレクトリが作成されます。 以下で説明するように有効期限が設定されていない限り、ディレクトリは自動的に消去されません。
TeamCity が処理するチェックアウト (サーバー側または エージェント側チェックアウトモード) の場合、TeamCity は、エージェント上の各チェックアウトディレクトリで最後にチェックアウトされたリビジョンをトラックし、新しいビルドでは、最後に使用されたリビジョンから現在のビルドのリビジョンまでの増分パッチを適用します。 使用されたリビジョンは、ビルド結果ページの 変更 タブで確認できます。
増分チェックアウトとは、TeamCity によって作成または変更されていないファイル (たとえば、前回のビルドスクリプトによって作成または変更されたファイル) が、変更された状態で保持されることを意味します (専用の VCS ルート固有のリセットオプションが使用されている場合を除く)。 そのため、次のことをお勧めします。
ビルドに影響を与え、以前のビルドによって生成された可能性があるすべてのファイルに対して、ビルドの最初のステップとしてビルドがクリーンな手順を実行するようにしてください。 典型的なファイルはコンパイル出力、テストレポート、ビルドプロデュースアーティファクトです。
ビルドがバージョン管理下にあるファイルを変更または削除しないようにしてください。
TeamCity が増分パッチを作成できないことを検出すると、 クリーンチェックアウトが強制されます。 手動で強制することも、ビルドごとに実行されるように構成することもできます。
チェックアウトディレクトリの場所
デフォルトのチェックアウトディレクトリ
デフォルトのチェックアウトディレクトリの場所 (ビルド設定の バージョン管理設定ページで チェックアウトディレクトリ フィールドが 自動に設定されている場合) は次のように指定されます。
エージェントの作業ディレクトリの場所がカスタマイズされている場合、これは次のように変更されます。
VCS 設定ハッシュコード <VCS_設定_ハッシュ_コード> は、VCS ルート、そのチェックアウトルール、およびビルド構成 (チェックアウトモード) で使用される VCS 設定のセットに基づいて計算されます。 これは事実上、同じ VCS 設定を持つすべてのビルド構成間でディレクトリが共有されることを意味します。
ソースファイルは、 VCS チェックアウトルールで定義されたマッピングに従って、チェックアウトディレクトリに配置されます。
カスタムチェックアウトディレクトリ
カスタムチェックアウトディレクトリを構成するには、ビルド設定の バージョン管理設定ページで チェックアウトディレクトリ フィールドを カスタムパスに設定し、指定されたフィールドにカスタムパスを入力します。
次の条件が満たされていることを確認してください。
チェックアウトディレクトリは、VCS 設定が異なるビルド構成間で共有されません (共有されると、TeamCity はディレクトリ内で別のビルド構成がビルドされるたびに クリーンチェックアウトを実行します);
ディレクトリの内容は、単一の TeamCity エージェントのプロセス以外によって変更されません (そうしないと、TeamCity は一貫した増分ソース更新を保証できない場合があります)。 これを排除できない場合は、参加しているすべてのビルド構成でクリーンビルドチェックアウトオプションをオンにしてください。 このルールは、同じ作業ディレクトリを共有する TeamCity エージェント同士にも適用されます。 ある TeamCity エージェントは別のエージェントを認識していないため、もう一方のエージェントは、そのエージェントには外部プロセスとして見えます。
チェックアウトディレクトリの内容は、 特定の状況下で TeamCity によって削除される可能性があることに注意してください。
チェックアウトディレクトリの検索
課題を調査していて、ビルド構成で使用されたディレクトリを知る必要がある場合は、ビルドログからディレクトリを取得するか、ビルド構成と最後に使用されたディレクトリを一覧表示する生成されたファイル <エージェント作業ディレクトリ>/ディレクトリ.map を参照できます。
ビルドスクリプトでは、TeamCity が提供する teamcity.ビルド.チェックアウトディレクトリ プロパティを使用して、ビルドチェックアウトディレクトリの実効値を参照できます。 デフォルトでは、これは ビルドが実行されるディレクトリでもあります。
チェックアウトディレクトリの有効期限
server-side および エージェント側のチェックアウトモードでは、指定された期間 (デフォルトでは 8 日間) 使用されていない (ディレクトリをチェックアウトディレクトリとして使用してエージェント上でビルドが実行されていない) 場合、または別のビルドで使用可能なディスク領域よりも多くの空きディスク領域が必要な場合、チェックアウトディレクトリはディスクから自動的に削除されます。 手動チェックアウトモードでは、ディレクトリの有効期限が設定されていない限り、自動ディレクトリクリーニングは実行されません。
ビルドエージェント上でビルドに十分なディスク空き容量を確保するために、 空きディスク容量ビルド機能を使用することをお勧めします。
次のいずれかの方法で新しい値(時間単位)を指定することで、ディレクトリの自動有効期限の時間枠を変更できます。
ビルドエージェント.プロパティファイルのteamcity.エージェント.ビルド.チェックアウトディレクトリ.有効期限時間エージェントプロパティsystem.teamcity.ビルド.チェックアウトディレクトリ.有効期限時間ビルド構成プロパティ0は、ビルドが終了した直後にチェックアウトディレクトリを削除しますなしは、ディレクトリを TeamCity が削除してはならないことを TeamCity に通知しますデフォルトはデフォルト値の使用を強制します
有効期限に基づくディレクトリのクリーニングは、ビルドエージェントがアイドル状態 (つまり、ビルドが実行されていない状態) のときにバックグラウンドで実行されます。
チェックアウトディレクトリの 有効期間は、 work/ディレクトリ.map ファイルに反映されます。 ファイル内の行は、既存のチェックアウトディレクトリに対応します (1 対 1)。 各行の最後の値は、その特定のディレクトリがクリーンアップされるまでの時間数を表します。 デフォルトでは、値は各ディレクトリに対して 192 時間 (8 日) に設定されています (パラメーター値: デフォルト)。
上記のパラメーターを指定してデフォルト値を上書きできますが、変更は 新しく作成されたすべてのディレクトリにのみ適用され、既存のすべてのディレクトリはそれぞれの有効期間値を保持することに注意してください。