TeamCity オンプレミス 2025.11 ヘルプ

ビルドチェーン

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

一般的なユースケース

ビルドチェーンを指定する最も一般的な使用例は、プロジェクトの同じテストスイートを異なるプラットフォームで実行することです。例: リリースビルドの前に、さまざまなプラットフォームと環境でテストが正しく実行されることを確認する必要があります。この目的のために、TeamCity にテストを実行し、最初に統合ビルドを実行し、その後リリースビルドを実行するように指示できます。

チェーン構築メカニズムがどのように機能するのか詳細に見てみましょう。リリースビルド構成の依存ビルドを起動すると、TeamCity は次のことを行います。

  1. リリースビルド構成スナップショットが依存するすべてのビルド構成のチェーンを解決します。

  2. すべての依存ビルド構成の変更をチェックし、ビルドチェーンの最初のビルドがビルドキューに入るときに同期します。

  3. 特定のリビジョンでビルドする必要があるすべてのビルドをビルドキューに追加します。

ビルドチェーンの設定

ビルド構成で依存関係を指定するには:

  1. 構成設定を開き、依存関係設定タブに移動します。

  2. 新しいスナップショット依存関係を追加するボタンをクリックしてください。

詳細と例については、依存関係を構築するも参照してください。

ビルドチェーンからキュービルドを停止 / 削除する

ビルドが停止またはビルド待ち行列から除去されているビルドがビルドチェーンの一部である場合は、コメントフィールドにメッセージ " このビルドはビルドチェーンの一部です " があります。

ビルドチェーンの他の実行中またはキューに入っている部分(つまり、アクションでビルドに関連する他の実行中のビルドまたはキューに入っているビルド)がある場合、これらのビルドはラベル「他の部品を停止」にリストされます。

ユーザーがリスト内のビルドを停止するアクセス権を持っている場合は、その近くにチェックボックスがあります。現在のビルドを停止するとリスト内のビルドが確実に失敗する場合(デフォルトでは、リストされているビルドが停止中の元のビルドに依存している場合など)は、このチェックボックスはデフォルトでオンになっています。

ユーザーがリストからビルドを中止するアクセス権を持っていない場合、チェックボックスは表示されません。

チェックボックスを選択すると、キューからの停止 / 削除のために選択されたビルドがマークされます。

ユーザーにビルドチェーンの一部であるビルドを表示するアクセス権がない場合、このビルドはユーザーにはまったく表示されません。そのようなビルドが 1 つでもある場合、「そのすべての部分へのアクセス権がありません」という警告が表示されます。ストライプは、メッセージ「このビルドはビルドチェーンの一部です」のすぐ下に表示されます。

ビルドチェーンの他のすべての部分が現在のユーザーによって表示できない場合は、「他の部分を表示するアクセス権がありません」という警告とともに黄色のストライプが表示されます。

ビルドチェーンの実行中またはキューに入っているビルドがない(つまり、ビルドチェーンの他のすべての部分が終了した)場合、追加情報は表示されません。

チェーン部品間のリビジョン同期を無効にする

ビルドを昇格するときに、ビルド構成のスナップショット依存関係のリビジョン同期を無効にすることができます。
このオプションは、ビルドをチェーンパート 1 からチェーンパート 2 に昇格し、パート 2 の最初のビルド構成でこのオプションが無効になっている場合に機能します。この場合、TeamCity はパート 1 とパート 2 のビルドに異なるソースリビジョンを使用できます。依存関係を構築するのビルドセットアップ例を参照してください。

これは、コードリビジョンを依存関係 (チェーン内の先行ビルド) と同期せずに依存ビルドを実行する必要がある場合に便利です。
たとえば、古いビルドをデプロイビルド構成に昇格させると、このビルドは最新のデプロイスクリプトを使用して実行されます。
負荷 / 受け入れテストでは、バージョン管理システムにテストを保存し、システムをテストするために頻繁にテストを変更する場合、アプリケーション全体を再構築する必要はありません。代わりに、テストフェーズから直接チェーンを取得できます。

チェーン視覚表現を構築する

基本的に、各ビルドチェーンは有向非巡回グラフです(英語)。つまり、サイクルを持つことはできません。

ビルドチェーンは、TeamCity Web UI のさまざまな場所に表示されます。

ビルド構成設定の依存関係ページ

ビルド構成がビルドチェーンの一部である場合、対応する情報がビルド設定 | 依存関係 | スナップショット依存関係に表示されます。ビルドチェーンリンクをクリックすると、ビルドチェーンのプレビューとその構成が別のウィンドウで開きます。プレビューにはチェーンのビルドが表示されます。自動トリガーが構成されたビルドには、アイコン v.png が付けられます。

Preview of snapshot dependencies

プロジェクトホームページとビルド構成ホームページのチェーンのビルドタブ

プロジェクトとビルド構成の両方のページでビルドチェーンを確認できます。これらの各ページには、スナップショット依存関係が構成されているときに表示されるビルドチェーンタブがあります。

このタブには、このプロジェクトのビルドまたはこのビルド構成を含むチェーンのリストが表示され、フィルタリングすることができます。最後に完成したビルドのチェーンがリストの一番上に表示されるように、ビルドチェーンがソートされていることに注意してください。

円グラフのアイコンは、チェーンの一部であるビルドのステータスの比率を表示します。円グラフにカーソルを合わせると、詳細が表示されます。

Collapsed build chains

チェーンが拡張されると、以下の情報も利用可能です。

  • このビルドチェーンを構成するすべてのビルド

  • これらのビルドの状況: トリガーされていない、キュー内、実行中または終了済み、その詳細

  • チェーンは、実際の実行順にビルドを表示します。つまり、最初に開始するビルドが左側に表示されます。

チェーンでビルドをクリックすると、選択したビルドとそのすべての直接の依存関係がハイライトされます。このページ:

  • チェーンのコンパクトな表現を提供します。複数のトップビルドが依存ビルドの同じチェーンをトリガーした場合、TeamCity は複数のトップビルドを含む 1 つのビルドチェーンを表示します。

  • 追加の表示オプションがあります: プロジェクトによるグループ化と詳細を隠す。

  • ビルドチェーンでビルドが選択されたときに、すべてのダウンストリーム / アップストリームビルドを推移的にハイライトします。

このページから、次のこともできます。

  • 「トリガーされていない」ビルドがまだある場合は、チェーンを続行します。実行をクリックすると、チェーンリビジョンで新しいビルドが開始され、このチェーンからのビルドに関連付けられます。

  • custom_build(1).png をクリックすると、ビルドチェーンリビジョンが事前に選択されたカスタムビルドダイアログが開きます。このアクションは、チェーンで一部のビルドを再実行する場合に使用できます。

ビルド結果ページの依存関係タブ

依存関係が設定されている場合は、ビルド結果ページの依存関係タブでその詳細を表示できます。このタブには間接的な依存関係も表示されます。たとえば、ビルド A がビルド B に依存し、ビルド B がビルド C と D に依存している場合、これらのビルド C と D はビルド A の間接的な依存関係になります。
このタブには、チェーンのビルドによってダウンロードおよび配信されたアーティファクトも表示されます。また、ビルドをグループ化 / グループ解除したり、以前のチェーンから再利用されたビルド ( 適切なビルド ) をハイライトしたりすることもできます。

部分的なチェーン実行

2 つのビルド構成がスナップショット依存関係によってリンクされている場合、依存ビルドは開始前に常に完了した他のビルドを必要とします。ただし、ビルドチェーンの一部のみ実行する必要がある場合もあります。このセクションでは、不要なチェーン構成をスキップし、必要なものだけを実行する方法について説明します。

カスタムビルドを実行するダイアログ

チェーン部分を実行する必要がほとんどない場合は、チェーン構成をそのままにして、チェーンの一部を実行する必要があるときはいつでもカスタムビルドを実行するダイアログを使用できます。ダイアログの依存関係タブに切り替えて、無視するビルド構成の「スキップ」オプションを選択します。

Skip builds

ダイアログでは、実行しようとしている構成に直接リンクされているビルド構成のみをスキップできることに注意してください。例: 「ビルド 1 →ビルド 2 →ビルド 3 →ビルド 4」の「ビルド 4」を開始すると、チェーンでは「ビルド 3」のみをスキップできます。「ビルド 4」をトリガーして、TeamCity に「ビルド 3」より前の構成を無視するように指示することはできません。

条件付きビルド依存関係

バージョン 2024.12 以降、TeamCity は teamcity.build.chain.skipTags および teamcity.build.chain.onlyTags 構成パラメーターをサポートします。これらのパラメーターを使用すると、条件付きビルド依存関係を構成できます。

  • teamcity.build.chain.skipTags パラメーターは、不要な構成を明示的にスキップします。チェーンは除外されていないビルドのみを実行します。

  • teamcity.build.chain.onlyTags パラメーターは、実行する構成を指定します。ただし、これによってビルドチェーンが指定された構成のみに制限されるわけではありません。

    • onlyTags が独自の依存関係を持つ構成を参照する場合、これらの依存関係も実行されます。

    • onlyTags パラメーターに記載されている構成間の構成はスキップできません。

パラメーター値

両方のパラメーターは、コンマ区切りのタグと構成 ID を値として受け入れます。

  • タグは teamcity.configuration.tags パラメーターの値です。このパラメーターを使用して任意の構成にラベルを付け、skipTags/onlyTags に同じ値を設定します。複数のタグ値は、スペース、コンマ、セミコロンで区切ることができます。

  • 構成 ID は、構成設定の構成名に表示されます。

    Build configuration ID

    構成関連ページの URL から構成 ID をコピーすることもできます。これらの ID は通常、projectName_configurationName 形式です。例: 「https://foo.com/buildConfiguration/Glacier_TestWin/2554」URL はビルド結果ページに対応し、「Glacier_TestWin」は構成 ID、「2554」は内部ビルド番号です。

パラメーターの優先度

チェーン(またはその一部)がトリガーされると、TeamCity はチェーンの起動に使用された構成から skipTagsonlyTags のみを読み取ります。これらのパラメーターは依存関係ビルドでは無視されます。

次のビルドチェーンは、単一の「BuildA → BuildB → BuildC」チェーンにリンクされた 3 つのサンプル構成を示しています。

// Configuration A object BuildA : BuildType({ id = AbsoluteId("BuildA") params { param("teamcity.configuration.tags", "extra") } }) // Configuration B object BuildB : BuildType({ id = AbsoluteId("BuildB") params { param("teamcity.configuration.tags", "extra") param("teamcity.build.chain.skipTags", "extra") } dependencies { snapshot(BuildA) {} } }) // Configuration C object BuildC : BuildType({ id = AbsoluteId("BuildC") name = "BuildC" dependencies { snapshot(BuildB) {} } })

新しい「構成 B」ビルドを開始すると、「構成 A」をスキップしてソロビルドとして実行されます。ただし、「構成 C」を開始すると、「BuildA → BuildB → BuildC」チェーン全体がトリガーされます。

アーティファクトの解決

別のビルドにアーティファクトを提供するビルドをスキップすると、アーティファクトが配信されないため、このダウンストリームビルドは失敗します。これを防ぐために、TeamCity は厳密なアーティファクトの依存関係をオプションの依存関係 ( +:build.jar => build/libs/ ではなく ?:build.jar => build/libs/ ) に動的に置き換えます。

部分ビルドのビルド再利用

ビルドが上流の構成の一部をスキップした場合、TeamCity はそれを依存関係が変更されたビルドと見なします。そのため、それ以降のチェーン実行ではこのビルドは再利用されず、代わりに新しいビルドがトリガーされます。

例 1: タグをスキップ

次のチェーンには、複数のビルドおよびテスト構成が含まれており、「すべてビルド」複合構成によってチェーン全体がトリガーされます。

Full chain

チェーン全体を実行すると、時間とリソースが消費される可能性があります。「すべてビルド」でコアの「ビルド ...」構成のみを実行できるようにするには、タグまたは ID のいずれかを値として使用して teamcity.build.chain.skipTags パラメーターを追加します。どちらの方法も同じですが、ニーズに最も適したものを選択してください。

skipTags パラメーター値

スキップする各構成に teamcity.configuration.tags パラメーターを追加します。これらのパラメーターを任意の文字列に設定し、teamcity.build.chain.skipTags パラメーターと同じ文字列を使用します。

以下の Kotlin スニペットでは、不要な構成に「オプション」タグを使用しています。

object TestWin : BuildType({ id("TestWin") params { param("teamcity.configuration.tags", "optional") } }) object TestAndroid : BuildType({ id("TestAndroid") params { param("teamcity.configuration.tags", "optional") } }) // ... // Other optional build configurations // ... object TeamcityGatedPrDemo_BuildAll : BuildType({ id("BuildAll") type = BuildTypeSettings.Type.COMPOSITE params { param("teamcity.build.chain.skipTags", "optional") } dependencies { snapshot(BuildLinux_iOS) {} snapshot(BuildPlugins) {} snapshot(BuildPortable) {} snapshot(BuildWin) {} } })

不要な構成をそれぞれタグでマークする代わりに、この構成 ID を teamcity.build.chain.skipTags パラメーター値として使用できます。

object TestWin : BuildType({ id("TestWin") }) object TestAndroid : BuildType({ id("TestAndroid") }) // ... // Other build configurations // ... object TeamcityGatedPrDemo_BuildAll : BuildType({ id("BuildAll") type = BuildTypeSettings.Type.COMPOSITE params { param("teamcity.build.chain.skipTags", "TestAndroid,TestIOS,TestLinux,TestPS,TestWin,BuildPlugins") } dependencies { snapshot(BuildLinux_iOS) {} snapshot(BuildPlugins) {} snapshot(BuildPortable) {} snapshot(BuildWin) {} } })

    チェーン全体を実行するには、teamcity.build.chain.skipTags パラメーターを削除するか、構成タグまたは ID と一致しない任意の値に設定します。例: 短縮された毎日のビルド中に構成を省略して、完全な夜間ビルドを実行するスケジュールトリガーを追加します。TeamCity トリガー設定には、ビルドパラメーターを追加または変更できるビルドのカスタマイズセクションが含まれています。

    object TeamcityGatedPrDemo_BuildAll : BuildType({ id("BuildAll") type = BuildTypeSettings.Type.COMPOSITE params { param("teamcity.build.chain.skipTags", "optional") } triggers { schedule { // Full "Build All" chain running daily at 3 AM schedulingPolicy = daily { hour = 3 } triggerBuild = always() withPendingChangesOnly = false buildParams { param("teamcity.build.chain.skipTags", "nightly-build-mode") } } } })

    例 2: タグのみ

    この例では、例 1 と同じチェーンを使用します。

    Full chain

    個々の構成は、teamcity.configuration.tags パラメーターを使用してタグ付けされます。便宜上、このチェーンの Kotlin 構成はタブに分類されています。

    object TestWin : BuildType({ id = AbsoluteId("TestWin") params { param("teamcity.configuration.tags", "tests,windows") } }) object BuildWin : BuildType({ id = AbsoluteId("BuildWin") params { param("teamcity.configuration.tags", "build,windows") } dependencies { snapshot(TestWin) {} } })
    object TestLinux : BuildType({ id = AbsoluteId("TestLinux") params { param("teamcity.configuration.tags", "tests,linux") } }) // Shared configuration for Linux and iOS object BuildLinux_iOS : BuildType({ id = AbsoluteId("BuildLinux_iOS") params { param("teamcity.configuration.tags", "build,linux,ios") } dependencies { snapshot(TestIOS) {} snapshot(TestLinux) {} } })
    object TestIOS : BuildType({ id = AbsoluteId("TestIOS") params { param("teamcity.configuration.tags", "tests,ios") } }) // Shared configuration for Linux and iOS object BuildLinux_iOS : BuildType({ id = AbsoluteId("BuildLinux_iOS") params { param("teamcity.configuration.tags", "build,linux,ios") } dependencies { snapshot(TestIOS) {} snapshot(TestLinux) {} } })
    object TestAndroid : BuildType({ id = AbsoluteId("TestAndroid") params { param("teamcity.configuration.tags", "tests,portable") } }) object TestPS : BuildType({ id = AbsoluteId("TestPS") params { param("teamcity.configuration.tags", "tests,portable" } }) object BuildPortable : BuildType({ id = AbsoluteId("BuildPortable") params { param("teamcity.configuration.tags", "build,portable") } dependencies { snapshot(TestAndroid) {} snapshot(TestPS) {} } })
    object BuildPlugins : BuildType({ id = AbsoluteId("BuildPlugins") params { param("teamcity.configuration.tags", "build,plugins") } })
    object TeamcityGatedPrDemo_BuildAll : BuildType({ id("BuildAll") type = BuildTypeSettings.Type.COMPOSITE params { select("teamcity.build.chain.onlyTags","", label = "Choose a sub-chain to run",description = """ * run all — runs the entire chain * desktop — runs "Build (Win)" and "Build (Linux/iOS)" builds with their related tests * portable — runs the "Build (Portable)" build with its related Android/PS tests * windows — runs the "Test (Win) > Build (Win)" sequence * linux — runs the "Test (Linux) > Build (Linux/iOS)" sequence * ios — runs the "Test (iOS) > Build (Linux/iOS)" sequence * plugins — runs the solo "Build Plugins" configuration """.trimIndent(), display = ParameterDisplay.PROMPT, options = listOf( "run all" to "", "plugins", "desktop" to "windows,linux,ios", "portable" to "BuildPortable", "windows", "linux", "ios")) } dependencies { snapshot(BuildLinux_iOS) {} snapshot(BuildPlugins) {} snapshot(BuildPortable) {} snapshot(BuildWin) {} } })

    複合「すべてビルド」構成では、teamcity.build.chain.onlyTags パラメーターが「プロンプト」動作モードの「選択」パラメーターとしてスタイル設定されます。チェーンが手動でトリガーされるたびに、カスタムビルドを実行するダイアログがポップアップ表示され、ユーザーは起動するチェーンの部分を選択できます。

    Subchain selector
    • すべて実行 — 空の文字列にマップされたラベル。これは、onlyTags パラメーターの初期値 / デフォルト値です。このチェーンの 9 つの構成すべてを実行します。

    • plugins — 「Build Plugins」構成をトリガーします。この構成は、「plugins」タグを持つ他の構成がなく、他のビルドに依存していないため、単独で実行されます。

    • desktop — 「windows」、「linux」、「ios」タグのいずれかを持つ 5 つのビルド / テスト構成のサブチェーンを実行します。

    • portable — ID によって「BuildPortable」構成を明示的に指定します。この構成は「TestAndroid」と「TestPS」に依存するため、3 つの構成すべてが実行されます。パラメーター値として「portable」タグを使用する場合と同じです。

    • windows/linux/ios — 同一のタグにマップされたパラメーター値。プラットフォーム固有の短い「テスト→ ビルド」サブチェーンをトリガーします。共有の「BuildLinux_iOS」構成をトリガーすると、リンクされた「TestLinux」と「TestIOS」の両方の構成が強制的に実行されるため、「linux」と「ios」のサブチェーンは同一であることに注意してください。

    使用可能な値のリストには、次のオプションはありません

    • build — この値はすべての「ビルド ...」構成を直接トリガーし、リンクされた「テスト ...」構成を開始します。その結果、チェーン全体が実行されます。

    • tests — この値は、左端の「テスト ...」と右端の「すべてビルド」構成のみをトリガーできず、「ビルド ...」構成はそのまま残ってしまうため、ユーザーを混乱させる可能性があります。これは、TeamCity がチェーンの途中で構成をスキップできないために発生します。その場合、実行されない構成を横断する依存関係をどのように処理するかが不明になります。

    サービスメッセージ

    上流ビルド構成の任意のビルドステップから ##teamcity[skipQueuedBuilds tags='value1,value2,...' comment='Your comment'] サービスメッセージを送信して、下流構成のキューに入れられたビルドをキャンセルします。skipTags/onlyTags パラメーターと同様に、このメッセージの tags 引数は次のものを受け入れます。

    • 構成に追加された teamcity.configuration.tags パラメーターの値。

    • 構成 ID。

    サービスメッセージを使用して、ビルドチェーンの特定の「部分」をキャンセルします。例: 個々のテストスイートをキャンセルするには、「ビルド」構成から skipQueuedBuilds を送信する必要があります。一部のテストが実行され、一部のテストがスキップされても、「ビルド→ テスト→ デプロイ」チェーンの整合性はそのまま維持されます。

    Build ----|---- Test Suite 1 ----| |---- Test Suite 2 ----| |---- Test Suite 3 ----| |---- Test Suite 4 ----| |---- Test Suite 5 ----|---- Deploy

    これらのテストをすべてスキップすると、このチェーンの中間セクション全体が失われます。これにより、混乱を招く可能性のある「ビルド→ ??? →デプロイ」チェーンが生成されます。これを回避するには、構成を複製し、代わりに別の「ビルド→ デプロイ」チェーンを作成することを検討してください。

    2026 年 2 月 06 日

    関連ページ:

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

    ビルド (たとえば、ビルド B) のスナップショット依存関係を別のビルド (ビルド A) のソースに設定することで、ビルド B がビルド A の実行と終了の後にのみ開始されることを保証できます。ビルド A は依存関係ビルドと呼ばれ、ビルド B は依存ビルドと呼ばれます。ビルド設定 | 依存関係ページには、構成された依存関係が表示されます。このページのスナップショットの依存関係セクションでは、ビルドチェーンとその構成をプレビューできます。プレビューにはチェーンのビルドが表示されます。自動トリガーが構...

    プロジェクト管理者ガイド

    このセクションでは、プロジェクト管理に焦点を当てます。TeamCity プロジェクトとビルド構成の作成、ビルドステップの設定、依存関係チェーンの構成などについて説明します。基本的な TeamCity ワークフロー:次のダイアグラムは、基本的な TeamCity ワークフローを示しています。TeamCity サーバーはリポジトリの変更を検出しました。サーバーはこの変更をデータベースに書き込みます。ビルド構成に添付されたトリガーは、データベース内の関連する変更を検出し、ビルドを開始します。トリガー...

    一般的な依存関係の概念

    このページでは、例に基づいて、TeamCity で依存関係がどのように機能するかについての一般的な考え方を示します。依存関係の説明については、ビルド構成の依存関係を参照してください。多くの場合、あるビルドの出力を別のビルドで使用するだけでなく、同じソースで複数のビルドを順次または並列に実行すると便利です。典型的な例を考えてみましょう。本番ビルドを取得する前に、Windows と macOS でテストする必要があるクロスプラットフォームプロジェクトがあります。この単純なケースに最適なワークフローは...

    機能ブランチを使用した作業

    分散バージョン管理システム (DVCS) の機能ブランチを使用すると、メインの開発とは独立して機能に取り組み、機能のすべての変更をブランチにコミットし、機能が完了したら変更をメインのブランチにマージできます。このアプローチは、ソフトウェア開発チームに多くの利点をもたらしますが、専用のサポートがない継続的インテグレーションサーバーでは、ビルド構成の重複が頻繁に発生したり、可視性が低下したり、最終的にはプロセスに対する制御が失われるなど、多くの問題も発生します。機能ブランチの TeamCity サポ...

    カスタムビルドの実行

    通常、ビルド構成ではビルドトリガーを使用して、必要なスケジュールに従って、または TeamCity がソースコード内の新しい変更を検出したときに新しいビルドを開始します。これらの自動的にトリガーされるビルドに加えて、TeamCity ではビルドを手動で実行し、必要に応じて設定をカスタマイズすることもできます。つまり、新しいプロパティの追加または既存のプロパティの変更、特定の変更の選択、ビルドのスケジュール、ビルドを実行するエージェントの選択などを行うことができます。TeamCity には、カスタ...

    ビルドパラメーターの設定

    パラメーターは、TeamCity 設定およびビルドスクリプトの構文を介して参照するペアです。パラメーター部分は、生の値 () にすることも、別のパラメーターへの参照 () を含めることもできます。パラメーター型:TeamCity は次の 3 種類のパラメーターをサポートします。構成パラメーター — ビルド構成内で設定を共有することを主な目的とするパラメーター。これらのパラメーターを使用して、テンプレートから作成された構成やレシピを使用する構成をカスタマイズすることもできます。TeamCity は...