TeamCity 2020.2 ヘルプ

依存ビルド

TeamCity では、1 つのビルド構成は 1 つ以上の構成に依存できます。2 種類の依存関係を指定できます。

アーティファクトの依存関係は、あるビルドによって生成されたアーティファクトを別のビルドに取り込む方法にすぎません。対応するスナップショットの依存関係がない場合、主にビルド構成がソースに関して関連していない場合に使用されます。例:1 つのビルドが他のビルドに再利用可能なコンポーネントを提供します。
スナップショットの依存関係は、ビルドの処理方法に影響を与え、ビルドが深く関連していて、あるビルドが別のビルドのロジック部分であることを意味します。

スナップショットの依存関係

スナップショットの依存関係は、TeamCity のビルド構成間のソースレベルの依存関係を表現できる強力な概念です。主なゴールは、スナップショットの依存関係にリンクされたさまざまなビルド構成を作成することにより、複雑なビルド手順を可能にすることです。これにより、特に、単一のモノリスビルドを、柔軟な再利用ルールを使用して相互リンクされたビルドのセット(ビルドチェーン)に分割できます。TeamCity は、より柔軟で強力な機能を可能にするため、このレベルでビルド構造を定義する宣言型(ビルドトリガーを追加するのではなく、依存関係を宣言する)に従います。

典型的なスナップショットの依存関係の使用箇所と関連するブログ投稿の説明については、依存関係を構築するを参照してください:2019 年 9 月(英語)2016 年 3 月(英語)2012 年 4 月(英語)

ビルド構成 A のビルド構成 B へのスナップショット依存関係により、A のビルドを開始する前に、A の各ビルドの「適切な」ビルドが B になるようになります。A と B の両方のビルドは、同じチェーンに属していてリビジョン同期が実施されている場合、同じソーススナップショットを使用します(VCS ルートが異なる場合はソースのリビジョンは同じであるか、同時に取得されます)。リビジョンの同期が強制されていない場合、ビルド A は完成したビルド B を A にプロモートするときに最新のリビジョンを使用できます(ビルドチェーンで詳細を読む)。

スナップショット依存関係を持つビルドのビルド結果ページでは、依存関係のあるすべてのビルドとそのエラーがある場合はそれらのエラーを確認できます。

スナップショットの依存関係は、ビルドの動作を次のように変更します。

  • ビルドがキューに入れられると、スナップショットに依存するすべてのビルド構成からのビルドも一時的にキューに入れられます。次に、TeamCity は、ビルドで使用されるリビジョンを決定します(「変更の確認」プロセス)。

  • 一部のビルド構成がすでに一致する変更を伴うビルド(「適切なビルド」)を開始していて、スナップショットの依存関係に「適切なビルドがある場合は新しいビルドを実行しない」オプションがオンになっている場合、TeamCity はすでにキューに入れられたビルドを使用してキューに入れられたビルドを最適化します。キューに入れられたビルドではなく、完成したビルド。次に、対応するキューに入れられたビルドがサイレントに削除されます。チェーンのビルドがキューに残っている間、新しいビルドが開始および終了する可能性があるため、この手順は数回実行できます。

  • スナップショット依存関係を介してリンクされているすべてのビルドは、ソースのリビジョンを明示的に指定して TeamCity によって開始されます。リビジョンは、同じ瞬間に対応するように計算されます(同じ VCS ルートの場合、同じリビジョン番号です)。キュービルドチェーン(スナップショット依存関係にリンクされているすべてのビルド)の場合、使用するリビジョンはビルドをキューに追加した後に決定されます。現時点では、チェーンのすべての VCS ルートの変更がチェックされ、現在のリビジョンはビルドで修正されています。

  • 同じビルド構成を指す同じチェーンから構築するにスナップショット依存関係とアーティファクト依存関係がある場合、TeamCity は same-sources ビルドからアーティファクトを確実にダウンロードします。

  • デフォルトでは、ビルドチェーンの一部であるビルドはクリーンアップから保持されますが、これはビルド構成ごとに切り替えることができます。詳細についてはクリーンアップの説明を参照してください。

依存関係に応じて、トポロジ構築は順次または並行して実行できます。

ビルドが失敗した場合のビルドチェーン継続時の動作は、スナップショット依存関係オプションを介してカスタマイズ可能です。失敗した、または依存関係の開始に失敗したそれぞれに対して、4 つのオプションのいずれかを選択できます。

  • ビルドを実行しますが、問題を追加します : 依存ビルドが実行され、問題がそれに追加され、その状況が失敗に変更されます。(問題が早く解決されなかった場合)

  • ビルドを実行しますが、問題を追加しません : 依存ビルドが実行され、問題は追加されません。

  • ビルドを開始できなかったものとしてマーク : 依存ビルドは実行されず、「開始に失敗しました」とマークされます。

  • ビルドをキャンセル : 依存ビルドは実行されず、「キャンセル」とマークされます。

チェーンのビルドは、dep.<configurationId>.<parameterName> 構文を介して前のビルドのパラメーターを参照できます。

スナップショット依存関係のあるビルドがトリガーされたときにチェーンにパラメーターをプッシュダウンするための特別なサポートがあります。これは、reverse.dep.<configurationId>.<parameterName> 名でパラメーターを定義することによって行われます。

チェーンでビルドのトリガーを設定する場合、推奨されるアプローチは次のとおりです。結果について考えます。プロセスの最後に取得するビルドを検討し、対応する「最上位」のビルド構成でトリガーを構成します。最上位のビルドがトリガーされるとビルドが自動的にキューに入れられるため、この最上位のビルド構成に依存するビルド構成ではトリガーは必要ありません。
また、VCS トリガーの関連する「スナップショットの依存関係の変更によるトリガー」設定および「バージョン管理設定」構成セクションの「スナップショットの依存関係からの変更を表示する」チェックボックスも参照してください。

スナップショットの依存関係がどのように機能するかを説明するための例を考えてみましょう。

A と B の 2 つのビルド構成があり、構成 A には構成 B に対するスナップショットの依存関係があり、リビジョンの同期が強制されているとします。

  1. 構成 A のビルドがトリガーされると、構成 B のビルドが自動的にトリガーされ、両方のビルドがビルドキューに配置されます。ビルド B が最初に開始され、ビルド A はビルド B が終了するまでキューで待機します(他の特定のオプションが設定されていない場合)。

  2. ビルド B と A がキューに追加されると、TeamCity はこれらのビルドに含めるようにソースを調整します。すべてのビルドは、ビルドがキューに追加された瞬間に取得されたソースで実行されます。

  3. ビルド B が終了し、正常に終了した場合は、TeamCity はビルド A の実行を開始します。

上記の例では、スナップショット依存関係の基本的な基本を、追加オプションなしで簡単なプロセスとして示しています。スナップショットの依存関係オプションについては、スナップショットの依存関係のページを参照してください。

アーティファクトの依存関係

アーティファクトの依存関係は、あるビルドの出力(アーティファクト)を別のビルドで使用するための便利な手段を提供します。アーティファクトの依存関係が構成されている場合、ビルドが開始される前に、必要なアーティファクトがエージェントにダウンロードされます。次に、ビルド結果の依存関係タブを使用して、ビルドで使用されたアーティファクト、または現在のビルドのアーティファクトを使用したビルドを確認できます。

アーティファクト依存関係を作成および構成するには、依存関係ビルド構成設定ページを使用します。ビルドスクリプト内またはローカルにアーティファクトをダウンロードする必要がある場合は、そのために REST API または Ivy Ant のタスクを使用できます。

アーティファクトのクリーンアップに関する注意

アーティファクトはされないことがあり清掃それらが構築し、他のことでダウンロードされた場合、これらはまだクリーンアップされていないビルドします。アーティファクトの依存関係が構成されているビルド構成の場合、この構成によって他のビルドからダウンロードされたアーティファクトをクリーニングできるかどうかを指定できます。この設定は、クリーンアップポリシーページで利用できます。

関連ページ:

ビルドチェーン

ビルドチェーンは、スナップショットの依存関係によって相互接続された一連のビルドです。ビルドチェーンは「パイプライン」と呼ばれることもあります。リビジョンの同期が有効になっているスナップショットの依存関係にリンクされたビルドチェーンの一部は、ソースの同じスナップショットを使用します。一般的なユースケー...

依存関係を構築する

このページでは、例に基づいて、TeamCity で依存関係がどのように機能するかについての一般的な考え方を示します。依存関係の説明については、依存ビルドを参照してください。導入 :多くの場合、あるビルドの出力を別のビルドで使用したり、同じソース上でいくつかのビルドを順番に実行したりすると便利です。典...

スナップショットの依存関係

ビルド(ビルド B など)のスナップショット依存関係を別のビルド(ビルド A)のソースに設定することで、ビルド A が実行されて終了した後にのみビルド B が開始されるようにすることができます。ビルド A を依存ビルドと呼びますが、ビルド B は依存ビルドです。ビルド設定 | 依存関係ページには、構...

クリーンアップ

TeamCity のクリーンアップ機能により、古いビルドデータや不要なビルドデータを自動的に削除できます。サーバーのクリーンアップ構成は管理 | サーバー管理 | クリーンアップ設定で使用可能です。クリーンアップスケジュールの設定が可能で、一般的なクリーンアップ情報が表示されます。特定のプロジェクト...

VCS トリガーの設定

TeamCity が設定されたVCS ルートで新しい変更を検出するたびに、VCS は自動的に新しいビルドを開始し、保留中の変更にその変更を表示します。ビルド構成に追加できる VCS トリガーは 1 つだけです。ビルド構成に保留中の変更があると、デフォルト設定の新しい VCS トリガーがビルドをトリガ...