TeamCity 2019.1ヘルプ

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

分散バージョン管理システム(DVCS)のフィーチャーブランチを使用すると、メインの開発とは独立してフィーチャーを操作し、フィーチャーのすべての変更をブランチにコミットして、フィーチャーが完了したときにメインブランチに変更をマージできます。このアプローチは、ソフトウェア開発チームに多くの利点をもたらします。ただし、専用のサポートを持たない継続的統合サーバーでは、一定のビルド構成の重複、可視性の低下、最終的にはプロセスの制御の喪失など、多くの問題が発生します。

機能ブランチのTeamCityサポートは継続的に増加しており、他の機能の中でも、TeamCityはビルド構成のVCSルートの特定のブランチの変更を検出するたびにブランチ リモート実行トリガを開始し、自動マージはビルド成功後にブランチを別のものにマージします。

このページで:

サポートされているバージョン管理システム

GitおよびMercurial機能ブランチは、Perforce ブランチストリームサポートと同様にサポートされます。

ブランチの設定

DVCS ブランチの使用を開始するには、どのブランチが変更を監視する必要があるかを構成する必要があります。これは、ブランチ仕様フィールドを介して、GitまたはMercurial VCSルートの一般設定セクションで行われます。
Perforceでは、対応するボックスをオンにして、ブランチサポート機能を有効にします。これにより、ブランチ仕様フィールドが表示されます。このフィールドは、ブランチの名前またはパターンのリストを受け入れます。TeamCityは、デフォルトのブランチに加えて、ブランチ仕様に一致するブランチをモニターします。

ブランチ仕様を構成すると、TeamCityはこれらのブランチの変更を監視し始めます。ビルド構成にVCSトリガーと一部のブランチでの変更の検出がある場合、TeamCityはこのブランチでビルドをトリガーします。ビルド構成のホームページから、ブランチ名で履歴のフィルタリング、変更ログ、保留中の変更、および発行ログを行うこともできます。ブランチ名はカスタムビルドダイアログにも表示されるため、ブランチでもカスタムビルドを手動でトリガーできます。

ブランチ仕様フィールドの構文は、「+|-:branch_name」ルールの改行区切りリストです。

各ルールには、1つ以上の文字に一致する1つのオプションの * プレースホルダーを含めることができます。
例: +:refs/heads/teamcity* は、refs/heads/teamcity で始まるすべてのブランチ および少なくとも1つの追加文字と一致します。
ブランチと refs/heads/teamcity は一致しません。

branch_name パラメーターはVCS固有、つまりGitの refs/heads/master です:

branchSpec.png

アスタリスク(*)ワイルドカードと一致するブランチ名の一部は、TeamCityユーザーレベルインターフェースに表示される短いブランチ名( 論理ブランチ名 )になります。行には、オプションの括弧を含めることもできます。括弧は、*が一致する記号ではなく、論理名として使用されるパターンの一部を示します。

ブランチ仕様のパラメーターを使用できます。

単一のVCS ブランチがブランチ仕様の複数の行と一致する場合、最も具体的な(パターンと一致する最小文字)最後のルールが適用されます。

つまり、仕様にブランチに一致する正確なパターン(つまり、* ワイルドカードのないパターン)が含まれている場合、最後のそのようなパターンが使用されます: 次のような仕様がある場合:

+:refs/heads/release-v1 -:refs/heads/release-v1

その後、最後のパターンが勝ち、ブランチは除外されます。

ブランチ仕様に * ワイルドカードを使用した複数のパターンがある場合、TeamCityは最短の論理名を生成するパターンを選択します: このブランチ仕様:

+:refs/heads/*/hotfix -:refs/heads/v1/*

refs/heads/v1/hotfix ブランチが含まれます(「v1」は「hotfix」より短いため)。
* ワイルドカードを使用した2つのパターンが同じ長さの論理名を生成する場合、最後のパターンが優先されます。

ブランチ仕様は、「#"で始まる行としてコメントをサポートします。

#! escape: CHARACTER 構文を介して定義された特別なエスケープ構文もあります。たとえば、ブランチ名で丸括弧を使用するには、エスケープする必要があります。 release-(7.1) ブランチを追跡するとします。これを行うには、仕様の最初の行としてエスケープシンボルを指定します。Mercurialの場合、次のブランチ仕様がそれを行います。

#! escape: \ +:release-\(7.1\)

デフォルトブランチ

DVCSのVCSルートを設定する場合、デフォルトとして使用するブランチ名を指定する必要があります。デフォルトのブランチには特別な意味があります。

  • ブランチが指定されていない場合、または指定されたブランチがブランチ仕様に含まれていない場合(たとえば、誰かがブランチを選択せずに実行ボタンをクリックした場合など)に使用するフォールバックブランチです。

  • ビルドおよび変更のシーケンスを表示し、ブランチ作成の瞬間に到達するときに使用できます。

  • デフォルトのブランチでは、異なるVCSルート(たとえば、ルートの1つがGitで別のルートがMercurialの場合)およびスナップショット依存関係によってリンクされている異なるビルドで異なるブランチを使用できます。トップチェーンビルドがデフォルトブランチでトリガーされると、そのすべての依存関係もそれぞれのデフォルトブランチでビルドされます。

ブランチフィルターを使用して無効にしない限り、デフォルトのブランチは常に暗黙的にブランチ仕様に含まれます。TeamCity UIでは、デフォルトのブランチはブランチマーカーの暗い背景でマークされています。

ブランチ

TeamCityは、現在のTeamCityユーザーのコミットに基づいて、ブランチを識別およびグループ化できます。

ブランチフィルターでブランチグループを選択すると、定義されたVSCユーザー名に基づいて、コミットが最後の100件の変更に含まれるすべてのアクティブブランチが表示されます。

論理ブランチ名

論理的なブランチ名は、ビルドのユーザーインターフェースおよびビルド構成レベルで表示されるブランチ名です。論理的なブランチ名は、通常、完全なVCS固有のブランチ名の一部です。バージョン管理からブランチ名にブランチ仕様を適用することにより計算されます。

例:ブランチ仕様が次のように定義されている場合:

+:refs/heads/*

その場合、* に一致する部分(たとえば master)は論理的なブランチ名です。

ブランチ仕様パターンが括弧を使用する場合、論理名は括弧内の名前の一部で構成されます。VCS ブランチ refs/heads/v8.1/feature1のUIに表示される v8.1/feature1 論理名を表示するには、次を使用します。

+:refs/heads/(v8.1/*)

デフォルトのブランチをブランチ仕様に含める必要はありません。これは、そこにすでに暗黙的に組み込まれているためです。ただし、UIのデフォルトブランチの短い論理ブランチ名、たとえば masterが必要な場合は、ブランチ仕様にそれを含めて括弧を使用できます。

+:refs/heads/(master)

ビルド

ブランチからのビルドは、TeamCity UIで簡単に認識できます。これは、以下の特別なラベルが付けられているためです。

branches.png

特定のブランチに関心がある場合は、ブランチ名で履歴をフィルタリングすることもできます。TeamCityは、デフォルトのブランチからのビルドにもブランチラベルを割り当てます。

変更

ビルドごとに、TeamCityはそれに含まれる変更を示します。ブランチからのビルドの場合、変更計算プロセスではブランチが考慮され、ビルドブランチに関連する変更が表示されます。ブランチのビルドの変更は、ビルドのリビジョンからブランチの以前のビルドまたはデフォルトブランチのビルドへの変更として計算されます。
コミットのグラフを含む変更ログは、監視対象のブランチで何が起こっているかを理解できます。

branchesChange.png

グラフの表示オプションをデフォルトで有効にすると、TeamCityはグラフ上にビルドマーカーを表示します。

アクティブブランチ

ブランチが構成されたビルド構成では、ほとんどのUIページにデフォルトでアクティブなブランチが表示されます。

アクティブなブランチは、最近のアクティビティを持つブランチです。最近のビルドがあるか、最近のコミットでリポジトリに存在します。

アクティビティのしきい値は、ビルド構成パラメーターを介して構成できます。パラメーターは、ビルド構成(これは1つのビルド構成のみに影響します)、プロジェクト、または内部プロパティー (これはサーバー全体のデフォルトを定義します)で変更できます。構成のパラメーターは、内部プロパティーのパラメーターをオーバーライドします。

ブランチは、次の場合にアクティブと見なされます。

  • VCSリポジトリに存在し、最近のコミットがあります。(つまり、teamcity.activeVcsBranch.age.days パラメーターの値よりも小さい有効期間、デフォルトでは7日間のコミット)。

  • または、最近のビルド(つまり、年齢が teamcity.activeBuildBranch.age.hours パラメーターの値よりも小さいビルド、デフォルトでは24時間)があります。
    ビルドされた閉じたVCS ブランチは、最後のビルド後24時間はアクティブとして表示されます。閉じたブランチをディスプレイから削除するには、teamcity.activeBuildBranch.age.hours=0を設定します。

テスト

TeamCityは、ビルドで失敗した新しいテストを検出しようとします。新しくないテストについては、どのビルドでテストが失敗し始めたかを確認できます。この機能はブランチも認識しています。つまり、最初のビルドが計算されると、TeamCityは同じブランチからビルドを走査します。

さらに、ブランチフィルターはテストの詳細ページで利用でき、単一のブランチでテストの合格または失敗の履歴を確認できます。

故障状態

ビルド障害条件が次のように構成されている場合:ビルドメトリックは、前回の成功/終了/固定ビルドと比較して変更されました、同じブランチからのビルドが使用されます。同じブランチに適切なビルドがない場合、デフォルトのブランチからのビルドが使用され、対応するメッセージがビルドログに追加されます。

トリガー

VCSトリガーはブランチを完全に認識しており、ブランチでチェックインが検出されるとビルドをトリガーします。チェックインごとのトリガー、クワイエットピリオド、トリガールールなどのすべてのVCSトリガーオプションは、ブランチからのビルドで直接使用できます。デフォルトでは、Schedule and Finishビルドトリガーは、デフォルトのブランチのみでビルドを監視します。

さらに、ブランチフィルターをVCS、スケジュール、および終了ビルドトリガーに指定できます。

依存関係

ブランチのビルド構成がブランチの他のビルド構成にスナップショット依存関係がある場合、ブランチのビルドがトリガーされると、ビルドのVCSルートのブランチが持っている場合、チェーンの他のビルドもブランチが関連付けられます。同じ論理名とこのブランチは、ブランチ仕様によって除外されません。ビルドのVCSルートは異なるリポジトリを指すことができますが、論理ブランチ名は同じである必要があります。

この条件が満たされると、この名前のブランチがチェックアウトされ、チェーンのすべてのビルド(トリガーされたビルドに依存)およびチェーンのすべてのビルド(トリガーされたビルドに依存)に同じマークが付けられます。ブランチ。そうでない場合、デフォルトのブランチがチェックアウトされます。

特定のブランチからビルドから成果物を取得するように成果物の依存関係を構成することができます。成果物の依存関係は、指定されたブランチからのビルドを使用します。同じことがスケジュールおよびビルドを終了トリガーにも当てはまります。

通知

「私の変更」を除くすべての通知ルールは、デフォルトブランチからのビルドについてのみ通知します。同時に、利用可能なすべてのブランチからのビルドに対して、「My changes」ルールが機能します。

ビルド構成ステータス

ビルド構成ステータスは、デフォルトのブランチのみからのビルドに基づいて計算されます。デフォルトのブランチからのビルドでは、構成ごとの調査が機能します。例:デフォルト以外のブランチからのビルドが成功しても、構成ごとの調査は削除されませんが、デフォルトブランチからのビルドは成功します。

複数のVCSルート

ビルド構成で複数のVCSルートを使用し、両方のVCSルートで監視するためにブランチを指定した場合、ビルドのトリガー方法はより複雑になります。

VCSトリガーは、論理的なブランチ名でいくつかのVCSルートからブランチをグループ化します。あるルートに他のルートからのブランチがない場合、デフォルトのブランチが使用されます。例:2つのVCSルートがあり、両方ともデフォルトのブランチ refs/heads/masterを持ち、最初のルートはブランチ仕様 refs/heads/7.1/* とブランチ refs/heads/7.1/feature1refs/heads/7.1/feature2の変更を持ち、2番目のルートは refs/heads/devel/* 仕様とブランチ refs/heads/devel/feature1の変更を持ちます。この場合、VCSトリガーは、次のブランチの組み合わせのリビジョンで3つのビルドを実行します。

root1

root2

refs / heads / master

refs / heads / master

refs / heads / 7.1 / feature1

refs / heads / devel / feature1

refs / heads / 7.1 / feature2

refs / heads / master

ビルドパラメータ

ビルドスクリプトでブランチ名を取得するか、他のビルド構成設定でパラメーターとして使用する必要がある場合は、定義済みのビルドパラメータを参照してください。

掃除

クリーンアップ規則は、アクティブなブランチ個別に適用されます。

手動ブランチマージ

ブランチをTeamCityに手動でマージできます。たとえば、コードのレビュー/承認後にのみブランチをマージする場合、またはブランチでテストが失敗したにもかかわらずマージを実行する場合です。

ソースを手動でマージするには :

ビルド結果ページを開き、右上隅のアクションメニューをクリックして、「このビルドソースをマージする」を選択します。
表示されるダイアログでは、宛先ブランチを選択し、コミットメッセージを追加できます(必須)。

ブランチを自動的にマージすることもできます。


関連事項:

管理者ガイド : Git | Mercurial


関連ページ:

ブランチ リモート実行トリガ

ブランチ リモート実行トリガは、TeamCityがビルド構成のVCSルートの特定のブランチの変更を検出するたびに、新しいパーソナルビルドを自動的に開始します。現時点では、トリガーはGitおよびMercurial VCSのみをサポートしています。ブランチ以外の非個人用ビルドについては、機能ブランチを使...

VCSトリガーの設定

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

プル・リクエスト

プル・リクエストビルド機能を使用すると、プルリクエスト(またはGitLabの場合はマージリクエスト)情報を自動的にロードし、次のVCS(バージョン管理システム)ホスティングサービスのプルリクエストブランチでビルドを実行できます。GitHub、Bitbucket サーバー、GitLab、この機能は、現...

スケジュールトリガーの設定

トリガー条件日時サンプル、使用されたcron形式の簡単な説明、VCSの変更、VCSトリガールール一般的な構文、トリガルールの例、変更をビルド、追加オプションクリーンチェックアウトを実施する、すべての有効で互換性のあるエージェントでビルドをトリガー、ビルドキューの最適化設定、