TeamCity 2020.1ヘルプ

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

The build checkout directory is a directory on the TeamCity agent machine where all the sources of all builds are checked out into.

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

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

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

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

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

If you want to investigate an issue and need to know the directory used by the build configuration, you can get the directory from the build log, or you can refer to the <Agent Work Directory>/directory.map generated file which lists build configurations with the directories they used last.

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

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

チェックアウトプロセス

For checkout handled by TeamCity (the server-side or agent-side checkout mode), TeamCity keeps track of the last revision checked out into each checkout directory on the agent and for the new build applies an incremental patch from the last used revision to the revision of the current build.
The revisions used can be looked up on the 変更 tab of the build results page.

Incremental checkouts mean that any files not created or modified by TeamCity (for example, by the previous build scripts) are preserved in their modified state (unless dedicated VCS root-specific reset options are used).
That is why it is recommended to:

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

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

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

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

In most cases, the default 自動 (推奨) setting will cover your needs. With this default checkout directory, TeamCity ensures the best performance and consistent incremental sources updates. The name of the default automatically created directory is generated as follows: <Agent Work Directory>/<VCS settings hash code> . The VCS settings hash code is calculated based on the set of VCS roots, their checkout rules and VCS settings used by the build configuration (checkout mode). Effectively, this means that the directory is shared between all the build configurations with the same VCS settings.

If for some reason you need to specify a custom checkout directory (for example, the process of creating builds depends on some particular directory), make sure the following conditions are met:

  • チェックアウトディレクトリは、異なる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 はデフォルト値の使用を強制する

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

最終更新日: 2020年7月28日