TeamCity 2020.2 ヘルプ

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

ビルドチェックアウトディレクトリは、すべてのビルドのすべてのソースがチェックアウトされる 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 エージェントにも適用されます。1 つの TeamCity エージェントは別のエージェントを認識していないため、他のエージェントはそのエージェントの外部プロセスとして表示されます。

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

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

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

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

古いチェックアウトディレクトリのクリーンアップ用の古い手動コントロールもあります。

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

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

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

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

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

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

関連ページ:

VCS チェックアウトモード | TeamCity

ビルド構成のバージョン管理設定ページでは、VCS からプロジェクトソースコードを取得する方法を構成できます。VCS ルートをアタッチしてチェックアウトオプションを構成できます。VCS チェックアウトモードは、プロジェクトソースがエージェントに到達する方法に影響を与える設定です。このモードは、ソースのチェックアウトにのみ影響します。現在のリビジョンおよび変更データ取得ロジックは TeamCity サーバーによって実行されるため、TeamCity サーバーは任意のモードで VCS サーバーにアクセスす...

VCS トリガーの設定 | TeamCity

TeamCity が設定された VCS ルートで新しい変更を検出するたびに、VCS は自動的に新しいビルドを開始し、保留中の変更にその変更を表示します。ビルド構成に追加できる VCS トリガーは 1 つだけです。ビルド構成に保留中の変更があると、デフォルト設定の新しい VCS トリガーがビルドをトリガーします。構成されている場合、VCS コミットフックを尊重する VCS ルートの変更間隔のチェックに従って、バージョン管理が変更についてポーリングされます。チェックアウトルールに一致した変更のみが保留...

ビルドチェーン | TeamCity

ビルドチェーンは、スナップショットの依存関係によって相互接続された一連のビルドです。ビルドチェーンは「パイプライン」と呼ばれることもあります。リビジョンの同期が有効になっているスナップショットの依存関係にリンクされたビルドチェーンの一部は、ソースの同じスナップショットを使用します。一般的なユースケース:ビルドチェーンを指定するための最も一般的な使用例は、異なるプラットフォームでプロジェクトの同じテストスイートを実行することです。例: リリースビルドの前に、テストがさまざまなプラットフォームや環境...