ビルドチェーン
ビルドチェーンは、依存関係によってリンクされた相互接続された ビルド構成と パイプラインのシーケンスで、各メンバーは開始前にアップストリームの完了を待ちます。

技術的には、ビルドチェーンは 有向非巡回グラフです。明確に定義された実行順序があり、循環を含めることはできません。
ビルドチェーンを使用するタイミング
複数のビルド構成やパイプラインを特定の順序で実行し、コードベースの同じ状態を共有する必要がある場合は、ビルドチェーンが役立ちます。 よくあるシナリオは二つあります:
リリース前のマルチプラットフォームテスト。 プロジェクトを一度コンパイルし、異なるプラットフォームでテストを同時に実行してから、すべてのテストに合格した場合にのみリリースビルドを作成します。
負荷の高いテストスイートのオフロード。 時間のかかるテストスイートを独自の構成に移動し、スナップショット依存関係でリンクし直すことで、検証対象のビルドと同じソースで引き続き実行しながら、独自の履歴、トリガー、エージェント要件を持てるようにします。

チェーンの実行方法
ダウンストリームビルドをトリガーしても、TeamCity はアップストリームを開始して待つだけではありません。 次の処理を行います:
チェーン全体を推移的に解決します — 数レベル深いものも含め、すべてのアップストリームオブジェクトが対象です。
すべてのチェーンメンバーを一度にキューに入れ、それらすべてで共有される単一のソーススナップショットを計算します。 すべてのメンバーは、同じ時点のコードで実行されます。
チェーンをアップストリームからダウンストリームへ実行し、各メンバーの直接の依存関係がすべて完了するとすぐにそのメンバーを開始します。
この共有リビジョンの保証が、ビルドチェーンと単純な順次トリガーの主な違いです。 たとえば、"Deploy" ステップが常に "Test" ステップで検証されたものとまったく同じバイナリを操作することを保証します。
チェーンメンバー
ビルド構成とパイプラインはどちらもチェーンに参加できます。 混在チェーン — パイプラインがビルド構成に依存する場合、またはその逆の場合 — も完全にサポートされています。
- ビルド構成
Web UI または Kotlin DSL で構成された従来の TeamCity エンティティです。 ビルド構成間の依存関係は スナップショット依存関係と呼ばれ、構成設定の 依存関係 ページで設定します。
- パイプライン
より新しい YAML ベースのエンティティです。 パイプライン間、またはパイプラインとビルド構成間の依存関係は パイプライン依存関係と呼ばれ、パイプライン設定パネルで設定します。
両方のタイプの設定手順については、 チェーン依存関係の構成 を参照してください。
アップストリームとダウンストリーム
チェーン依存関係は常に ダウンストリーム オブジェクトで宣言され、 上流 オブジェクトを指します。
「ビルド → テスト → デプロイ」チェーンを作成するには、 デプロイ を開いて テスト への依存関係を追加し、次に テスト を開いて ビルド への依存関係を追加します — その逆ではありません。
![]()
このモデルから二つの効果が生じます:
アップストリームオブジェクトは常に独立して実行できます。オブジェクト自体には依存関係がありません。
ダウンストリームオブジェクトをトリガーすると、そのすべてのアップストリーム依存関係が自動的にキューに入り、実行されます。
チェーンはファンアウトすることもできます。複数のオブジェクトがそれぞれ同じアップストリームに依存している場合、そのアップストリームが完了すると、十分な空きエージェントが利用可能であれば並列に実行されます。

TeamCity では、ダウンストリームビルドは 依存ビルド とも呼ばれ (前にあるビルドに依存するため)、アップストリームビルドは 依存関係ビルド と呼ばれます。
ビルドチェーンと終了ビルドトリガー
ビルドチェーンは、TeamCity でオブジェクトをリンクする推奨方法です。 ビルド構成とパイプラインの両方にわたって、ソースリビジョンの同期、ビルドの再利用、きめ細かな実行制御を提供します。
終了ビルドトリガーは、ビルド構成でのみ利用できる、古い左から右へのプッシュメカニズムです。 新しいセットアップでは、終了ビルドトリガーではなくビルドチェーンを使用することをおすすめします。
次のステップ
チェーン依存関係の構成 — 構成とパイプラインをリンクし、ビルドの再利用やリビジョンの同期などの依存関係の動作を調整します
チェーンでデータを渡す — チェーンメンバー間でファイルとパラメーター値を転送します
ビルドチェーンを実行 — チェーンのトリガー、停止、部分的な実行を行います
ビルドチェーンの監視 — チェーンの実行を調べ、個々のステップを再実行します
セキュアなチェーン依存関係 — 構成を承認されていないプロジェクト間依存関係から保護します