TeamCity 2019.1ヘルプ

ビルド・チェックアウト・ディレクトリー

ビルドチェックアウトディレクトリーは、すべてのビルドのすべてのソースがチェックアウトされるTeamCityエージェントマシン上のディレクトリーです。

  • エージェント側チェックアウトモードを使用する場合、ビルドエージェントはビルドの前にこのディレクトリーにソースをチェックアウトします。

  • サーバー側チェックアウトモードを使用する場合、TeamCityサーバーは増分パッチをエージェントに送信して、指定されたチェックアウトディレクトリーの最後のビルド以降に変更されたファイルのみを更新します。

  • 手動チェックアウトモードでは、ソースはチェックアウトされませんが、ビルドスクリプトを介してソースをチェックアウトするために、デフォルトのビルドチェックアウトディレクトリーが作成されます。有効期限が以下で説明するように設定されていない限り、ディレクトリーは自動的に削除されません。

ソースは、VCSチェックアウト規則で定義されたマッピングに従ってチェックアウトディレクトリーに配置されます。

チェックアウトディレクトリーは、バージョン管理設定ページのチェックアウト設定セクションで構成されています。デフォルトの自動 (推奨)値を強くお勧めしますが、下記のようにカスタムチェックアウトディレクトリーを設定することは可能です。

課題を調査したい場合や、ビルド設定で使用されているディレクトリーを知る必要がある場合は、ビルドログからディレクトリーを取得するか、< Agent Work Directory >/directory.map で生成されたファイルを参照してください。

ビルドスクリプトでは、TeamCityが提供する teamcity.build.checkoutDir プロパティーを介してビルドチェックアウトディレクトリーの実効値を参照できます。

デフォルトでは、これはビルドが実行されるディレクトリーでもあります。

チェックアウトプロセス

TeamCity(server-sideまたはagent-sideチェックアウトモード)によって処理されるチェックアウトの場合、TeamCityはエージェント上の各チェックアウトディレクトリーにチェックアウトされた最後のリビジョンを追跡し、新しいビルドでは最後に使用されたリビジョンから現在のリビジョンにインクリメンタルパッチを適用します。ビルドします。
使用されるリビジョンは、ビルド結果ページの変更タブで調べることができます。

増分チェックアウトとは、TeamCityによって(たとえば、以前のビルドスクリプトによって)作成または変更されなかったファイルは、変更された状態で保持されることを意味します(専用のVCSルート固有のリセットオプションが使用されない限り):
それが推奨される理由です:

  • ビルドに影響を与え、以前のビルドによって生成された可能性があるすべてのファイルに対して、ビルドの最初のステップとしてビルドがクリーンな手順を実行するようにしてください。典型的なファイルはコンパイル出力、テストレポート、ビルドプロデュースアーティファクトです。

  • ビルドがバージョン管理下にあるファイルを変更または削除しないようにしてください。

TeamCityが増分パッチをビルドできないことを検出した場合、クリーンチェックアウトが実施されます。また、手動で強制することも、各ビルドで実行されるように構成することもできます。

カスタムチェックアウトディレクトリー

ほとんどの場合、デフォルトの自動 (推奨)設定がニーズに対応します。このデフォルトのチェックアウトディレクトリーで、TeamCityは最高のパフォーマンスと一貫した増分ソースアップデートを確実にします。デフォルトの自動的に作成されたディレクトリーの名前は、次のように生成されます。< Agent Work Directory >/<VCS settings hash code>。VCS設定ハッシュコードは、VCSルートのセット、それらのチェックアウト規則、およびビルド設定で使用されるVCS設定(チェックアウトモード)に基づいて計算されます。事実上、これはディレクトリーが同じVCS設定を持つすべてのビルド設定間で共有されることを意味します。

何らかの理由でカスタムチェックアウトディレクトリーを指定する必要がある場合(たとえば、ビルドの作成プロセスが特定のディレクトリーに依存する場合)、次の条件が満たされていることを確認してください。

  • チェックアウトディレクトリーは、異なるVCS設定のビルド構成間で共有されません(そうでない場合、TeamCityは別のビルド構成がディレクトリーにビルドされるたびにクリーンチェックアウトを実行します)。

  • ディレクトリーの内容は、単一のTeamCityエージェントのプロセス以外のプロセスによって変更されません(そうでない場合、TeamCityは一貫した増分ソース更新を保証できない場合があります)。これを排除できない場合は、参加しているすべてのビルド構成に対して、クリーンビルドチェックアウトオプションをオンにしてください。このルールは、同じ作業ディレクトリーを共有する2つのTeamCityエージェントにも適用されます。あるTeamCityエージェントは別のエージェントの知識を持たないため、他のエージェントは外部プロセスとして表示されます。

特定の状況下では、チェックアウトディレクトリーの内容はTeamCityによって削除される可能性があります。

自動チェックアウトディレクトリーのクリーニング

server-sideおよびエージェント側のチェックアウトモードでは、指定された期間(デフォルトで8日間)または別のビルド時に、使用されない(チェックアウトディレクトリーとしてディレクトリーを使用するエージェントでビルドが実行されなかった)場合、チェックアウトディレクトリーはディスクから自動的に削除されます。利用可能な容量よりも多くの空きディスク容量が必要です。手動チェックアウトモードでは、ディレクトリーの有効期限が設定されていない限り、自動ディレクトリークリーニングは実行されません。

空きディスク容量ビルド機能を使用して、ビルドでビルドエージェント上に十分なディスク空き容量を確保することをお勧めします。

古いチェックアウトディレクトリーのクリーンアップのための古い手動制御もあります。

次のいずれかの方法で新しい値(時間単位)を指定することで、ディレクトリーの自動有効期限の時間枠を変更できます。

  • buildAgent.properties ファイルのteamcity.agent.build.checkoutDir.expireHours エージェントプロパティー

  • system.teamcity.build.checkoutDir.expireHours ビルド構成プロパティー
    • 0 は、ビルドが終了した直後にチェックアウトディレクトリーを削除する

    • never は、TeamCityがディレクトリーを削除してはならないことをTeamCityに通知します。

    • default はデフォルト値の使用を強制する

有効期限ベースのディレクトリークリーニングは、ビルドエージェントがアイドル状態(ビルドが実行されていない)のときにバックグラウンドで実行されます。


関連事項:

管理者ガイド : VCS設定値の設定