TeamCity オンプレミス 2023.05 ヘルプ

プルリクエスト

プルリクエスト ビルド機能を使用すると、プルリクエスト * 情報を自動的にロードし、GitHubBitbucket サーバーBitbucket クラウドGitLabAzure DevOpsJetBrains Space のプルリクエストブランチでビルドを実行できます。

* または、GitLab と JetBrains Space の場合はリクエストをマージします

このビルド機能を追加するときは、VCS ルートを指定し、VCS ホスティングタイプを選択する必要があります。
その他の設定は、選択した VCS ホスティングタイプによって異なります。

この機能は、現在のビルド構成に添付されている VCS ルートの元のブランチ仕様を拡張して、指定されたフィルタリング基準に一致するプル要求を含めます。

ビルド結果概要タブに表示されているプルリクエストの詳細を確認できます。

Pull request details

ビルド構成に VCS トリガーを構成すると、TeamCity は監視対象のブランチで検出された変更に基づいてビルドを自動的に実行します。例: GitHub リポジトリのプルリクエストの構築を自動的に開始するには、+:pull/* ブランチフィルタールールを使用して新しいトリガーを追加します (または既存のトリガーを変更します)。

GitHub プルリクエストでビルドを実行するように TeamCity を設定する方法のを参照するか、ビデオチュートリアル(英語)を参照してください。

VCS 固有の設定

GitHub プルリクエスト

この機能は、GitHub(英語) および GitHub Enterprise(英語) をサポートします。refs/pull/*/head ブランチでのみビルドを監視します。

GitHub ホスティング型では、次のパラメーターを使用できます。

パラメーター

オプション

説明

認証タイプ

VCS ルート認証情報を使用する

TeamCity は、VCS ルートが HTTP(S) フェッチ URL を使用する場合、VCS ルート設定からユーザー名 / パスワード認証情報または個人アクセストークン /x-oauth-basic を抽出しようとします。

VCS ルートが匿名認証または SSH を採用している場合、このオプションは機能しません。

GitHub Enterprise リポジトリの場合、個人アクセストークン /x-oauth-basic ペアのみが機能します。

アクセストークン

個人用アクセストークンを使用するか、OAuth 接続を介してトークンを取得します。public_repo (パブリックリポジトリ用)または repo (プライベートリポジトリ用)スコープのいずれかが必要です。

作成者による

このフィルターは、公開リポジトリにのみ適用されます。

同じ組織のメンバー

GitHub の同じ組織のメンバー(英語)によって送信されたプルリクエストのみを検出します。

メンバーと外部の協力者

同じ組織のメンバーと GitHub の外部の共同エディター(英語)によって送信されたプルリクエストのみを検出します。

みんな

すべてのプル要求を検出します。このオプションを選択すると、任意のユーザーがビルドエージェントで悪意のあるコードを実行できる可能性があることに注意してください。

ソース別ブランチ

ブランチフィルターを定義して、指定された基準に一致するソースブランチのプルリクエストのみを監視します。空のままにすると、フィルターは適用されません。

ターゲットブランチ

ブランチフィルターを定義して、指定された基準に一致するターゲットブランチでのみプルリクエストを監視します。空のままにすると、フィルターは適用されません。

下書きを無視

デフォルトでは、プルリクエストビルド機能は GitHub ドラフトプルリクエスト(英語)情報を読み込み、ドラフトプルリクエストでビルドを実行します。ビルドページには、プルリクエスト番号の横に「ドラフト」ステータスとアイコンが表示されます。

チェックボックスをオンにして、GitHub ドラフトプルリクエストを無視します。TeamCity は、ステータスが変更されるまでドラフトプルリクエスト情報をロードしません。

サーバー URL

接続用の GitHub URL を指定します。

空のままにすると、URL は VCS ルートフェッチ URL から抽出されます。

Bitbucket サーバープルリクエスト

Bitbucket サーバー(英語)ホスティング型では、次のパラメーターを使用できます。

パラメーター

オプション

説明

認証タイプ

VCS ルート認証情報を使用する

TeamCity は、VCS ルートが HTTP(S) フェッチ URL を使用する場合、VCS ルート設定からユーザー名 / パスワード認証情報を抽出しようとします。

VCS ルートが匿名認証を採用している場合、このオプションは機能しません。

ユーザー名パスワード

Bitbucket サーバーに接続するためのユーザー名とパスワードを指定します。

パスワードの代わりにアクセストークンを送信できます。トークンには、プロジェクトとリポジトリの読み取り権限が必要です。

ソース別ブランチ

ブランチフィルターを定義して、指定された基準に一致するソースブランチのプルリクエストのみを監視します。空のままにすると、フィルターは適用されません。

ターゲットブランチ

ブランチフィルターを定義して、指定された基準に一致するターゲットブランチでのみプルリクエストを監視します。空のままにすると、フィルターは適用されません。

サーバー URL

接続用の Bitbucket URL を指定します。

空のままにすると、URL は VCS ルートフェッチ URL から抽出されます。

プルリクエストブランチを使用

このオプションは下位互換性のみを目的としています。ソースブランチの代わりに、正式にサポートされていない Bitbucket(英語) プルリクエストブランチ (pull-requests/*) の検出を有効にします。注意: 切り替え後、過去 1 時間以内にコミットされた変更に対して、新しいビルドがトリガーされる場合があります。

Bitbucket クラウドプルリクエスト

Bitbucket Cloud はプルリクエスト用の専用ブランチを作成しないため、このビルド機能はソースリポジトリ内のソースブランチを直接監視します (フォークはサポートされていません)。
ビルド開始時に同じソースブランチから複数のプルリクエストが送信された場合、TeamCity はこれらすべてのリクエストをビルド結果に表示します。ただし、フィルタリング基準に一致する開いている PR からのコミットのみがビルドの変更として表示されます。

VCS ルートのブランチ仕様には、プル要求ブランチに一致するパターンが含まれていてはならないことに注意してください。

Bitbucket クラウド(英語)ホスティング型では、次のパラメーターを使用できます。

パラメーター

オプション

説明

認証タイプ

VCS ルート認証情報を使用する

TeamCity は、VCS ルートが HTTP(S) フェッチ URL を使用する場合、VCS ルート設定からユーザー名 / パスワード認証情報を抽出しようとします。

このオプションは、VCS ルートが SSH フェッチ URL を使用するか、匿名認証を使用する場合は機能しません。

ユーザー名パスワード

Bitbucket クラウドに接続するためのユーザー名とパスワードを指定します。プルリクエストアプリのパスワード(英語)を使用することをお勧めします | スコープを読み取ります。

ターゲットブランチ

ブランチフィルターを定義して、指定された基準に一致するブランチのプルリクエストのみを監視します。空のままにすると、フィルターは適用されません。

GitLab マージリクエスト

TeamCity は、他のホスティングサービスでプルリクエストを処理する方法と同様に、GitLab マージリクエスト(英語)を処理します。現在、TeamCity は、このビルド機能を有効にした後に送信されたマージ要求のみを検出します。

この機能は、refs/merge-requests/*/head ブランチでのみビルドを監視します。

GitLab(英語) ホスティング型では、次のパラメーターを使用できます。

パラメーター

説明

アクセストークン

接続に個人用アクセストークンを使用します。トークンには api スコープが必要です。

ソース別ブランチ

ブランチフィルターを定義して、指定された基準に一致するソースブランチでのみマージ要求をモニターします。空のままにすると、フィルターは適用されません。

ターゲットブランチ

ブランチフィルターを定義して、指定された基準に一致するターゲットブランチでのみマージ要求をモニターします。空のままにすると、フィルターは適用されません。

サーバー URL

接続用の GitLab URL を指定します。

空のままにすると、URL は VCS ルートフェッチ URL から抽出されます。

Azure DevOps プルリクエスト

この機能は、refs/pull/*/merge ブランチでのみビルドを監視します。

Azure DevOps(英語) の場合、TeamCity は、他の VCS のようにプル要求自体ではなく、マージブランチで要求を検出します。各ビルドは仮想ブランチで起動され、PR をマージした後のビルドの実際の結果を示します。ビルドには、変更を伴うコミットと仮想マージコミットの両方が含まれます。

この機能は Azure DevOps ドラフトプルリクエストを無視することに注意してください。

次のパラメーターは、Azure DevOps ホスティング型で使用できます。

パラメーター

説明

アクセストークン

接続にはパーソナルアクセストークンを使用してください。トークンには Code (read) スコープが必要です。

ソース別ブランチ

ブランチフィルターを定義して、指定された基準に一致するソースブランチのプルリクエストのみを監視します。空のままにすると、フィルターは適用されません。

ターゲットブランチ

ブランチフィルターを定義して、指定された基準に一致するターゲットブランチでのみプルリクエストを監視します。空のままにすると、フィルターは適用されません。

プロジェクト URL

リモート Azure DevOps サーバーと同期するプロジェクト URL を指定します。このフィールドは、オンプレミスの AzureDevOps インストールに推奨されます。空のままにすると、URL は VCS ルートフェッチ URL に基づいて作成されます。

JetBrains Space マージリクエスト

この機能は、オリジンリポジトリのソースブランチでマージリクエストを直接監視します。
同じソースブランチから複数のマージリクエストが送信された場合、TeamCity はこれらすべてのリクエストをビルド結果に表示します。ただし、フィルタリング基準に一致するオープンリクエストからのコミットのみがビルドの変更として表示されます。

JetBrains Space ホスティング型では、次のパラメーターを使用できます。

パラメーター

説明

接続

JetBrains Space への事前構成された接続を選択します。

ターゲットブランチ

ブランチフィルターを定義して、指定された基準に一致するブランチでのみマージ要求をモニターします。空のままにすると、フィルターは適用されません。

複数の並列ビルドを実行して、リクエストをマージする前に事前テストする場合、最善の解決策は次のとおりです。

  1. 複合ビルド構成を作成し、空のブランチ仕様を持つ JetBrains Space VCS ルートをそれに接続します。

  2. テストを使用した並列ビルドでスナップショットの依存関係を構成することにより、ビルドチェーンの最後に複合ビルド構成を追加します。

  3. チェーンの各ビルド構成にプルリクエスト機能を追加して、すべてのビルドがマージリクエストブランチの変更を検出できるようにします。ビルド構成テンプレートですべての設定を事前構成してから、それに基づいてこれらのビルド構成を作成できます。

  4. 複合ビルド構成設定の場合:

    • VCS トリガーを追加して、マージ要求ブランチで検出された変更に基づいてビルドを自動的に実行します。

    • ステータス発行者のコミット機能を追加して、ビルドステータスを JetBrains Space のコミット詳細に送信します。
      チェーンの他のビルド (たとえば、デプロイまたは統合テストビルド) がステータスを JetBrains Space に報告するようにするには、対応するビルド構成に Commit Status Publisher 機能を追加します。

その後、TeamCity は、JetBrains Space リポジトリに送信されたマージリクエストブランチの変更に基づいてビルドを自動的に実行し、Space のマージリクエストタイムラインにビルドステータスを公開します。

Space merge request timeline

JetBrains Space ブランチを未検証のマージリクエストから保護するために、リポジトリ設定で品質ゲートを構成することもできます。TeamCity ビルドを外部チェックとして設定した場合、JetBrains Space では、このリクエストのマージを許可する前に、マージリクエストのビルドが正常に終了する必要があります。

JetBrains Space マージリクエストの処理に関する既知の問題については、こちらを参照してください。

プルリクエストの定義済みビルドパラメーター

TeamCity は、有効化されたプルリクエスト機能を使用して、ビルドのプルリクエストに関する重要な情報を公開する複数の定義済みビルドパラメーターを提供します。

teamcity.pullRequest.number //pull request number teamcity.pullRequest.title //pull request title teamcity.pullRequest.source.branch //VCS name of the source branch; provided only if the source repository is the same as the target one teamcity.pullRequest.target.branch //VCS name of the target branch

これらのパラメーターは、ビルド構成の設定またはビルドスクリプトで使用できます。

プルリクエストワークフローの例

次の環境がセットアップされているとします。

  • パブリック GitHub リポジトリ web-app とデフォルトのブランチ master

  • TeamCity プロジェクト。

    • web-app リポジトリからのファイルを使用して Web アプリケーションをビルドする構成 web-app をビルドします。

組織(英語)のメンバーは、プルリクエストを master ブランチに送信してソースへの変更を提案し、これらの変更をマージする前に TeamCity で自動的にビルドおよびテストされるようにしたいと考えています。
TeamCity は、master ブランチに送信された各プルリクエストを検出し、更新されたソースに基づいて Web アプリケーションを構築できます。

TeamCity で web-app ビルド構成の説明されたワークフローを構成するには、次のようにします。

  1. VCS ルートを追加するからビルド構成へ :

    • ビルド設定 | バージョン管理設定に移動し、VCS ルートを接続するをクリックしてください。

    • ルートパラメーターを設定します。

      • VCS の種類 : Git

      • VCS ルート名 : <一意のルート名>

      • URL を取得 : <GitHub_repository_URL>

      • デフォルトブランチ : 監視対象のブランチ。デフォルトでは、refs/heads/master ( 機能ブランチの詳細を読む)

      • ブランチ仕様 : 追加のブランチを監視するためのフィルター (たとえば、+:refs/heads/*)

      • web-app リポジトリへのアクセス権を持つ GitHub ユーザーの認証パラメーター

    • 接続をテストし、成功したら作成をクリックします。

  2. プルリクエスト ビルド機能を追加するからビルド構成へ :

    • ビルド設定 | 機能を構築するに移動し、ビルド機能を追加をクリックしてください。

    • 関数型パラメーターを構成します。

      • VCS ルート : ステップ 1 で作成された VCS ルート

      • VCS ホスティングタイプ : GitHub

      • 認証タイプ : VCS ルート資格情報を使用するか、アクセストークンを選択して代わりに GitHub トークンを使用します

      • プルリクエストフィルタリング :

        • 作成者による : 同じ組織のメンバー

        • ターゲットブランチ : 空のままにして、フィルターを適用せず、リポジトリ内のすべての新しいプル要求をモニターするか、ターゲットブランチを明示的に指定します (この例では、master)

    • 接続をテストし、成功したら保存をクリックします。

  3. ビルド構成に VCS トリガーを追加します。

以上です ! これで、GitHub 組織のメンバーが master ブランチにプルリクエストを送信するたびに、TeamCity は次のように動作します。

  1. master ブランチに送信されたプル要求を検出します。

  2. web-app ビルド構成を実行します。定義済みのビルド手順に従って、ソースを収集し、アプリをビルドしてテストします。

  3. ビルド構成概要ページで処理されたプル要求に関する情報を表示します。プルリクエストのステータスをすぐに確認でき(1)、そのステータスに関する情報をリフレッシュできます(2)。

    Pull Request information in Build Overview

プロのヒント

セットアップをさらに自動化できるため、TeamCity:

  • ステータス発行者のコミットビルド機能を使用して、ビルドが完了した後、ビルドステータスを GitHub に送り返します。

  • ビルドが正常に終了した場合、自動マージビルド機能を使用して GitHub のプルリクエストをマージします。

  • プルリクエストでビルドチェーン全体を実行する場合は、チェーンの各ビルド構成にプルリクエスト機能を追加することを忘れないでください。この手順を簡略化するために、ビルド構成テンプレートにすべてを設定し、それに基づいてこれらのビルド構成を作成できます。

トラブルシューティング

TeamCity は、プルリクエストビルド機能に関連するイベントを teamcity-pull-requests.log ファイルに書き込みます。「debug-pull-requests」プリセットを適用して、DEBUG レベルのイベントをこのログに含めます。

関連ページ:

ビルド機能を追加する

ビルド機能は、ビルド構成に追加して、実行中のビルドやビルド結果のレポートに影響を与えることができる機能の一部です。ビルド設定 | 機能を構築するページには、構成された機能が表示され、管理できます。ビルド構成テンプレートから継承された場合でも、構成されたビルド機能を一時的または永続的に無効にすることができます。サイドバーを参照して、現在利用可能なすべてのビルド機能を確認してください。Xcode プロジェクト AssemblyInfo パッチャー...

VCS トリガーの設定

VCS トリガーは、TeamCity が構成済みの VCS ルートの新しい変更を検出するたびに新しいビルドを自動的に開始し、保留中の変更の変更を表示します。複数の VCS トリガーをビルド構成に追加できます。ビルド構成に保留中の変更があると、デフォルト設定の新しい VCS トリガーがビルドをトリガーします。構成されている場合、VCS コミットフックを尊重する VCS ルートの変更間隔のチェックに従って、バージョン管理が変更についてポーリングされます。チェックアウトルールに一致した変更のみが保留中と...

JetBrains Space 用に CI/CD を構成する方法

JetBrains Space は、ソフトウェア開発チーム向けのフルサイクルコラボレーションソリューションです。このガイドでは、JetBrains Space プロジェクトを TeamCity と統合することで、JetBrains Space プロジェクトの継続的な統合と配信を実現する方法について説明します。TeamCity との統合により、JetBrains Space ユーザーに次の利点がもたらされます。同じ環境内でのプロジェクトのコンパイル、テスト、デプロイ。マージリクエストのソースコードを...

ビルド結果ページ

TeamCity では、ビルドに関するすべての情報は、キューに入れられているか、実行中であるか、終了しているかにかかわらず、ビルド結果ページに蓄積されます。このページには、ビルド構成ホームページから、ホームモードで参照しているときに、ビルド番号またはビルドステータスがリンクとして表示される TeamCity UI のさまざまな場所からアクセスできます。一部のデータは、ビルドが終了した後にのみアクセスできます。変更、パラメーター、依存関係などの詳細は、キューで待機しているビルドにも適用できます。こ...

接続を構成

TeamCity を使用すると、外部サービスへの接続のプリセットを保存できます。これらのプリセットは、プロジェクトの作成、通知の構成、課題追跡システムとの統合など、サーバー上のさまざまな場所で再利用できます。この記事では、各タイプの接続を追加する方法について説明します。接続を追加するには、ターゲットプロジェクトの設定に移動し、接続ページを開いて、接続の追加をクリックします。接続タイプを選択し、表示名を設定して他と区別し、以下のように設定します。作成すると、現在のプロジェクトのネストされたすべての...

コンポジットビルド構成

複合ビルド構成は、複数の通常のビルド構成をトリガーし、結果を 1 か所で追跡するように設計された「ステップレス」構成です。重要なポイント:複合構成では、実際の構築ルーチンは実行されません。複合構成では、依存関係からすべての情報が集約され、一元的な方法で表示されます。複合ビルドはビルドキュースロットを占有せず、エージェントを実行する必要もありません。ビルド構成タイプを切り替えるには、「構成設定 | 一般」タブに移動します。サンプル:このチュートリアルでは、複数のビルド構成を作成し、1 つのビル...