機能ブランチの操作
分散バージョン管理システム (DVCS) の 機能ブランチを使用すると、メインの開発とは独立して機能に取り組み、機能のすべての変更をブランチにコミットし、機能が完了したら変更をメインのブランチにマージできます。 このアプローチは、ソフトウェア開発チームに多くの利点をもたらしますが、専用のサポートがない継続的インテグレーションサーバーでは、ビルド構成の重複が頻繁に発生したり、可視性が低下したり、最終的にはプロセスに対する制御が失われるなど、多くの問題も発生します。
TeamCity の機能ブランチサポートは継続的に拡張されており、他の機能として、TeamCity がビルド構成の VCS ルート内の特定のブランチの変更を検出するたびに新しい個人用ビルドを開始する ブランチリモート実行トリガー と、ビルド成功後にブランチを別のブランチにマージする 自動マージ が含まれます。
サポートされているバージョン管理システム
Git と Mercurial の機能ブランチ、および Perforce の ブランチストリームサポート がサポートされています。
ブランチの構成
DVCS ブランチの使用を開始するには、ブランチ仕様を設定する必要があります。 これらの仕様は、変更を監視する必要があるブランチを指定します。
ブランチ仕様を構成すると、TeamCity はこれらのブランチの変更を監視し始めます。 ビルド構成に VCS トリガーがあり、いずれかのブランチで変更が検出された 場合、TeamCity はこのブランチでビルドをトリガーします。 ビルド構成のホームページから、ブランチ名で履歴のフィルタリング、変更ログ、保留中の変更、発行ログを行うこともできます。 ブランチ名はカスタムビルドダイアログにも表示されるため、ブランチでもカスタムビルドを手動でトリガーできます。
共通仕様の構文
ブランチ仕様を設定するには、一般的な VCS ルート設定を開き、 ブランチ仕様 フィールドまでスクロールします。 各仕様は、特定のブランチを含めるか除外するかを指定するために +: または -: で始まる新しい行で、その後に完全に解決されたブランチ名が続きます。 +: 部分は省略できます。
- +:refs/heads/development
development ブランチをトラックします
- -:refs/heads/sandbox
sandbox ブランチを無視します
ワイルドカード
* ワイルドカードを使用すると、類似した名前を持つ複数のブランチを参照できます。
- refs/heads/*
既存のリポジトリ機能ブランチをすべてトラックするデフォルトルール。
- refs/heads/dev-*
お名前が "dev-" で始まる機能ブランチをトラックします: "dev-2024.2"、"dev-2025.1" など。
アスタリスク (*) ワイルドカードに一致したブランチのお名前の部分が、TeamCity のユーザーレベルインターフェースに表示される短いブランチのお名前 (別名 論理ブランチお名前) になります。 行には任意の丸括弧を含めることもできます。丸括弧がある場合、単に * に一致したシンボルではなく、論理お名前として使用するパターンの部分を示します。
順序と優先度
単一の VCS ブランチがブランチ仕様の複数の行と一致する場合、最も具体的な(パターンと一致する文字が最も少ない)最後のルールが適用されます。
つまり、仕様にブランチに一致する正確なパターン(つまり、 * ワイルドカードのないパターン)が含まれている場合、最後のそのようなパターンが使用されます。 次のような仕様がある場合:
その後、最後のパターンが勝ち、ブランチは除外されます。
ワイルドカードを含む 2 つのルールが同じブランチに一致するが競合する場合は、最短の論理名を生成するルールが優先されます。 例:
refs/heads/v1/hotfix ブランチの場合、次のルールはあいまいです。
論理名
v1にv1/hotfixを含める論理名
hotfixのv1/hotfixを除外する
v1 論理お名前は hotfix より短いため、TeamCity が解決する必要のあるワイルドカード文字は少なくなります。 これにより、最初のルールがより具体的になり、優先されます。 refs/heads/v1/hotfix ブランチが含まれます。
コメントとサービス式
ブランチ仕様では、 # 文字で始まる表現もサポートされています。 仕様に含めるか除外するかのブランチの名前を定義する正規表現とは異なり、これらは特定のタスク用に特別に作成された「サービス」行です。
#で始まる行は通常のコメントとして扱われます。+:refs/heads/main # Exclude legacy branch. DO NOT REMOVE! -:refs/heads/release-v1#! エスケープ: <任意の文字>式は、ブランチ名に特殊文字を使用できるようにするエスケープ文字を定義します。 例: 「release-(7.1)」ブランチの ブランチ仕様ルールを記述するには、丸括弧をエスケープする必要があります。 TeamCity のデフォルトのエスケープシンボルはバックスラッシュ (\) なので、ブランチ仕様は次のようになります:+:release-\(7.1\)別のエスケープ文字を使用する場合は、以下のように定義します。
#! escape: ! +:release-!(7.1!)#! fallbackToDefault: false式を使用すると、必要なブランチが見つからない場合に TeamCity が デフォルトブランチ を使用することを禁止できます。 たとえば、 TeamCity REST API を使用して存在しないブランチのビルドを開始する場合 (デフォルトでは、この場合 TeamCity はデフォルトブランチの新しいビルドを実行します)。#! fallbackToDefault: false +:included_branch -:excluded_branch
パイプラインの機能ブランチ
詳細については、 機能ブランチ ドキュメントを参照してください。
ブランチ固有のビルド構成設定
バージョン管理された設定を使用すると、リポジトリブランチごとに変数設定を含むビルド構成を作成できます。 例については、記事 ブランチ固有の設定を参照してください。
デフォルトブランチ
DVCS の VCS ルートを設定する場合、デフォルトとして使用するブランチ名を指定する必要があります。 デフォルトのブランチには特別な意味があります。
これは、ブランチが指定されていない場合、または指定されたブランチがブランチ仕様に含まれていない場合(たとえば、誰かがブランチを選択せずに 実行 をクリックした場合)に使用するフォールバックブランチです。
ビルドおよび変更のシーケンスを表示し、ブランチ作成の瞬間に到達するときに使用できます。
デフォルトのブランチでは、スナップショットの依存関係によってリンクされている場合、異なる VCS ルート(たとえば、ルートの 1 つが Git で別のルートが Mercurial の場合)および異なるビルドで異なるブランチを使用できます。 最上位のチェーンビルドがデフォルトのブランチでトリガーされると、そのすべての依存関係もそれぞれのデフォルトのブランチでビルドされます。
ブランチフィルターで無効にしない限り、デフォルトのブランチは常に暗黙的にブランチ仕様に含まれます。 TeamCity UI では、デフォルトブランチはブランチマーカーの濃い背景で示されます。
自分のブランチ
TeamCity は、現在の TeamCity ユーザーのコミットに基づいて、ブランチを識別してグループ化できます。
ブランチフィルターで ブランチグループを選択すると、定義された VSC ユーザー名に基づいて、コミットが最後の 100 件の変更に含まれるすべてのアクティブブランチが表示されます。
論理ブランチお名前
論理ブランチ名は、ビルドのユーザーインターフェースおよびビルド構成レベルに表示されるブランチ名です。 論理ブランチ名は、通常、完全な VCS 固有のブランチ名の一部です。 これは、バージョン管理からのブランチ名に ブランチ仕様を適用することによって計算されます。
例: ブランチ仕様が次のように定義されている場合:
その場合、 * に一致する部分(たとえば マスター )は論理的なブランチ名です。
ブランチ仕様パターンで丸括弧を使用している場合、論理お名前は丸括弧内のお名前の部分で構成されます。VCS ブランチ refs/heads/v8.1/feature1 について、 v8.1/feature1 論理お名前を UI に表示するには、これを使用します:
デフォルトのブランチは、すでに暗黙的に含まれているため、ブランチ仕様に含める必要はありません。 ただし、UI のデフォルトブランチの短い論理ブランチ名(たとえば、 マスター )が必要な場合は、それをブランチ仕様に含めて、括弧を使用できます。
ビルド
次の 2 つの方法のいずれかで、特定のブランチでビルドを手動で実行できます。
ビルドリストで必要なブランチの反対側にある 実行 をクリックします。
カスタムランダイアログを開き、 変更 タブに移動して、「ブランチをビルドする 」ドロップダウンメニューから必要なブランチを選択します。
特定のブランチまたはブランチのセットからビルドを自動的に実行するには、 ビルドトリガーを構成します。
ブランチからのビルドは、特別なラベルでマークされるため、TeamCity UI で簡単に識別できます:

特定のブランチに関心がある場合は、ブランチ名で履歴をフィルタリングすることもできます。 TeamCity は、デフォルトブランチからのビルドにもブランチラベルを割り当てます。
変更
TeamCity は各ビルドについて、ビルドに含まれる変更を表示します。 ブランチからのビルドでは、変更の計算プロセスでブランチが考慮され、ビルドブランチに関連する変更が表示されます。 ブランチ内のビルドの変更は、ビルドのリビジョンから、同じブランチ内の前回のビルドまたはデフォルトブランチ内のビルドまでの変更として計算されます。
コミットのグラフを含む変更ログは、監視対象ブランチで何が起きているかを理解するのに役立ちます。

グラフを表示 オプションがデフォルトで有効化されている場合、TeamCity はグラフにビルドマーカーを表示します。
アクティブブランチ
ブランチが構成されたビルド構成では、ほとんどの UI ページにデフォルトでアクティブなブランチが表示されます。
アクティブブランチ とは、最近のアクティビティがあるブランチです。最近のビルドがあるか、最近のコミットを含むリポジトリに存在します。
アクティビティのしきい値は、ビルド構成パラメーターを介して構成できます。 パラメーターは、ビルド構成(1 つのビルド構成のみに影響します)、プロジェクト、 内部プロパティ (サーバー全体のデフォルトを定義します)のいずれかで変更できます。 構成内のパラメーターは、 内部プロパティ内のパラメーターをオーバーライドします。
ブランチは、次の場合にアクティブと見なされます。
VCS リポジトリに存在し、最近のコミット(つまり、整数パラメーター
teamcity.activeVcsBranch.age.daysの値(デフォルトでは 7 日間)よりも経過日数の短いコミット)があります。または、最近のビルド (つまり、経過時間が整数パラメーター
teamcity.activeBuildBranch.age.hoursの値未満のビルド、デフォルトでは 24 時間) がある場合です。
ビルドがある閉じた VCS ブランチは、最後のビルドから 24 時間は引き続きアクティブとして表示されます。 閉じたブランチを表示から除去するには、teamcity.activeBuildBranch.age.hours=0を設定します。
テスト
TeamCity はビルド内の新たに失敗したテストを検出しようとします。新しくないテストについては、そのテストがどのビルドで失敗し始めたかを確認できます。 この機能はブランチにも対応しています。つまり、最初のビルドが計算されるとき、TeamCity は同じブランチのビルドを全探索します。
さらに、テスト詳細ページでは ブランチフィルターが利用可能で、単一のブランチでテストの合格または不合格の履歴を確認できます。
失敗条件
ビルド失敗条件が次のように設定されている場合: 最後に成功/完了/固定されたビルドと比較してビルドメトリックが変更された 、TeamCity は現在のビルドを同じブランチのビルドと比較しようとします。 同じブランチに適切なビルドがない場合は、デフォルトのブランチからのビルドを使用し、それぞれのメッセージをビルドログに追加します。 現在、デフォルトブランチが ブランチフィルター によって無効化されている場合、TeamCity はビルド失敗条件を適切に処理できないことに注意してください (関連する課題 TW-74884 を参照)。
トリガー
VCS トリガーはブランチを完全に認識しており、チェックインがブランチで検出されるとビルドをトリガーします。 チェックインごとのトリガー、静止期間、トリガールールなど、すべての VCS トリガーオプションは、ブランチからのビルドで直接使用できます。 デフォルトでは、スケジュールおよび完了ビルドトリガーは、デフォルトのブランチでのビルドのみを監視します。
さらに、VCS、スケジュール、完了ビルドトリガーに ブランチフィルターを指定できます。
依存関係
ブランチを含むビルド構成に、ブランチを含む他のビルド構成へのスナップショット依存関係がある場合、ビルドの VCS ルートのブランチが同じ 論理名を持ち、このブランチが ブランチ仕様によって除外されていない場合、ブランチ内のビルドがトリガーされると、チェーン内の他のビルドにも関連付けられたブランチが取得されます。 ビルドの VCS ルートは異なるリポジトリを指すことができますが、論理ブランチ名は同じである必要があります。
この条件が満たされると、このお名前のブランチがチェックアウトされ、チェーンのダウン方向にあるすべてのビルド (トリガーされたビルドが依存するビルド) とチェーンのアップ方向にあるすべてのビルド (トリガーされたビルドに依存するビルド) が同じブランチでマークされます。 それ以外の場合、デフォルトブランチがチェックアウトされます。
特定のブランチのビルドからアーティファクトを取得するようにアーティファクト依存関係を構成できます。アーティファクト依存関係は、指定されたブランチのビルドを使用します。 同じことが スケジュール トリガーと ビルド完了 トリガーにも当てはまります。
通知
「私の変更」を除くすべての通知ルールは、デフォルトブランチからのビルドについてのみ通知します。 同時に、利用可能なすべてのブランチからのビルドに対して、「My changes」ルールが機能します。
ビルド構成ステータス
ビルド構成ステータスは、デフォルトのブランチからのビルドのみに基づいて計算されます。 構成ごとの調査は、デフォルトのブランチからのビルドに対して機能します。 例: デフォルト以外のブランチからのビルドが成功しても、構成ごとの調査は削除されませんが、デフォルトのブランチからのビルドが成功すると削除されます。
複数の VCS ルート
ビルド構成に、指定されたブランチフィルターを持つ 2 つ(またはそれ以上)の VCS ルートがある場合、トリガー動作はより複雑になる可能性があります。
VCS トリガーは、複数のルートからのブランチを 論理ブランチお名前 でグループ化します。 あるルートに他のルートからのブランチがない場合、そのデフォルトのブランチが使用されます。
例: 2 つの VCS ルートに同じデフォルトブランチ refs/heads/マスター があります。 Root1 にはブランチ仕様 refs/heads/7.1/* があり、ブランチ refs/heads/7.1/feature1 と refs/heads/7.1/feature2 に新しいコミットがあります。 Root2 には仕様 refs/heads/devel/* があり、ブランチ refs/heads/devel/feature1 に新しいコミットがあります。
ここで、 feature1 は、異なるパスを持つ二つのブランチ .../7.1/feature1 と .../devel/feature1 に関連する論理お名前です。
この場合、VCS トリガーは、次のブランチの組み合わせからのリビジョンで 3 つのビルドを実行します。
ビルド番号 | root1 | root2 | 説明 |
|---|---|---|---|
1 |
|
| デフォルトのブランチは、各仕様に 暗黙的に追加されます。 |
2 |
|
|
|
3 |
|
|
|
ビルドパラメーター
ビルドスクリプトでブランチ名を取得するか、他のビルド構成設定でパラメーターとして使用する必要がある場合は、 定義済みのビルドパラメーターを参照してください。
クリーンアップ
クリーンアップルールは、 アクティブなブランチごとに 個別に適用されます。
手動ブランチマージ
TeamCity ではブランチを手動でマージできます。たとえば、コードレビュー/承認後にのみブランチをマージしたい場合や、ブランチでテスト失敗があってもマージを実行したい場合です。
ソースを手動でマージする は:
ビルド結果ページ を開き、右上隅の アクション メニューをクリックして このビルドソースをマージする を選択します。
表示されるダイアログでは、宛先ブランチの選択とコミットメッセージ(必須)の追加が有効化されます。
ブランチを 自動でマージすることも可能です。