VCS チェックアウトルール
VCS チェックアウトルールを使用すると、構成済みの VCS ルートの一部をチェックアウトし、バージョン管理のディレクトリをビルドエージェント上の ビルドチェックアウトディレクトリ内のサブディレクトリにマップできます。 リポジトリ全体の VCS ルートを定義し、各ビルド構成にその関連部分のみをチェックアウトするように指示することができます。
チェックアウトルールは、UI に表示されるビルド変更と、エージェント上のビルド用にチェックアウトされるファイルに影響します。 コミットがビルドの VCS ルートのチェックアウトルールパターンのいずれにも一致しない場合、TeamCity は完全に無視します。 このような変更は保留中として表示されず、現在の構成でビルドをトリガーできません。
コミット時に変更を表示するだけでビルドをトリガーしないようにするには、 VCS トリガールールを使用します。
一般的な推奨事項は、リポジトリのルートを指すいくつかの VCS ルートをできるだけ小さくし、チェックアウトルールを介して特定のビルド構成によってチェックアウトされるものを定義することです。
チェックアウトルールを追加するには
管理に移動し、構成するプロジェクトをクリックします。
プロジェクトの 一般設定ページで、 ビルド構成にある関連するビルドをクリックします。
サイドバーから バージョン管理設定を選択します。
リストで VCS ルートを見つけ、 チェックアウトルールを編集するをクリックしてルールを入力するフォームを開きます。
VCS リポジトリブラウザー
を使用して、チェックアウトするディレクトリを選択します。
TeamCity の Perforce サポートでは、チェックアウトルールが大文字と小文字を区別して扱われることに注意してください。 Perforce ベースのビルド構成の大文字と小文字を区別しないようにするには、 バージョン管理設定 ページで、 チェックアウト規則の編集フォームに次のコメントを追加します: ##teamcity ignore-case
構文
以下の例では、リポジトリ内のパス (VCS パス) は構成済みの VCS ルートを基準にし、エージェント上のパス (エージェントパス) はビルドチェックアウトディレクトリを基準にしています。
単一のチェックアウト規則の一般的な構文は次のとおりです。
ルールが指定されていない場合、すべてのファイルが含まれます。
ルールの入力を開始する際は、任意の +: ルールを入力するとすぐに、TeamCity がデフォルトの "すべて含める" 設定を除去することに注意してください。
すべてのファイルを明示的に含めるには、 +:. ルールを使用します。
除外チェックアウトルール (-: の形式) は、 Perforce および TFS のエージェント側チェックアウトを使用し、除外ルールが効果的に処理される場合を除き、通常はサーバー側チェックアウトのみを高速化します。
その他のバージョン管理システムでは、エージェント側チェックアウトが、include ルールとして示されたすべてのルートディレクトリをチェックアウトして除外されたディレクトリを削除することで、除外チェックアウトルールをエミュレートする場合があります。 このようなシステムでは、エージェント側チェックアウトに除外チェックアウトルールを使用することは、通常避ける必要があります。 詳細については、 VCS チェックアウトモードページを参照してください。
Git のエージェント側チェックアウトでは、TeamCity は一部のチェックアウトルールをスパースチェックアウトパターンに変換し、これにより サポート対象の VCS チェックアウトルール設定が制限されます。
ビルド構成に、交差するチェックアウトルールを持つ複数の VCS ルート (たとえば、2 つの VCS ルートにチェックアウトルール +: foo => bar がある) がアタッチされていて、ファイルが エージェントでチェックアウトされている場合、チェックアウト中に一部のファイルがスキップされる可能性があります。 UI に次の警告が表示されます。
この問題を回避するには、チェックアウトルール間の競合を解決するか、チェックアウトモードを「server-side 」に変更します。
規則を入力するときは、次の点に注意してください。
複数のルールを入力するには、各ルールを別々の行に入力する必要があります。
ファイルが含まれている場合、ルールがリストされている順序に関係なく、各ファイルに最も具体的なルールが適用されます。
演算子を入力しない場合、デフォルトで
+:になります。
規則を使用して、以下の操作を実行できます。
構文 | 説明 |
|---|---|
| ルートをビルドエージェントの |
|
|
|
|
|
|
|
|
3 つの VCS チェックアウト規則の例
上記の例では、最初のルールにより、 src/ヘルプ ディレクトリとその内容がチェックアウトから除外されます。 第三のルールは第二のルールよりも具体的で、 src/サンプル パスをビルドエージェントのデフォルト作業ディレクトリ内の サンプル パスにマップします。 第二のルールは、 ソース パスの内容をビルドエージェント上の 本番/ソース にマップします。ただし、最初のルールで除外された src/ヘルプ と、第三のルールで別の場所にマップされた src/サンプル は除きます。
Git ルートのチェックアウトルールの制限
Git プラグインは、 git sparse-checkout (英語) を使用してエージェント上の Git ファイルをチェックアウトします。 プラグインは、Git でサポートされる VCS チェックアウトルールのセットを制限する単純なファイルマッピング操作のみを実行できます。
次のルールがサポートされています。
ルールはファイルを再マップしてはならないことに注意してください。 つまり、次のルールは サポートされていません: +:dirA/dirA1 => dirA/dirA2
1 つのルートに複数のチェックアウトルールを指定する場合は、それらのチェックアウトディレクトリ (ルールの右側の部分) に共通の親ディレクトリ ([prefix/]) があることを確認してください。 エージェント側のチェックアウトではルール +:dirA => [prefix/]dirA のみがサポートされており、 [prefix/] はすべてのルールで同じである必要があります。
例:
次のルール サポートされていません: +:dirA=>[prefix/]dirA/postfix に注意してください。 チェックアウトディレクトリパスに [/postfix] を追加し、構成の VCS チェックアウトモード が "エージェントで常にファイルをチェックアウト" に設定されている場合、新しいビルドを開始できなくなります。
