web-dev-qa-db-ja.com

TeamCityでプルリクエストマージでCIビルドを実行する

TeamCityでセットアップされたCIビルドがあり、BitBucket(git)でプルリクエストが行われたときにトリガーされます。現在、プルリクエストのソースブランチに対してビルドされていますが、マージされたプルリクエストをビルドできれば、より意味があります。

私の研究により、次の可能な解決策が残されました。

  1. スクリプトはビルドの一部として実行されます-可能であれば、この方法では実行しないでください
  2. サーバー/エージェントプラグイン-これが可能かどうかを判断するのに十分なドキュメントが見つかりません

TeamCityで以前にこれを行った人はいますか、それを達成する方法について提案がありますか?

更新:(ジョン・ヘアの回答に基づく)

別の解決策-TeamCityがマージを行うことを忘れ、BitBucket Webフックを使用してgithubのようにマージされたブランチを作成し、JohnHoerrの回答に従います。

20
JonSquared

ブランチ仕様refs/pull-requests/*/mergeをプロジェクトのVCSルートに追加します。これにより、TeamCityはデフォルトブランチのプルリクエストのマージされた出力を監視します。

9
John Hoerr

BitBucket/Stashは次の場所でプルリクエストのブランチを作成しているようです。

refs/pull-requests // from

Teamcityのブランチからの実行機能、またはBitBucket/Stashのhttppost receiveフックのいずれかによって、その場所のリモート実行をセットアップできるはずです。

3
Adam Adamaszek

あなたが探している機能は、TeamCityの「リモートラン」機能を介して提供されているように思えます。これは基本的に、マージされたソースとターゲットのマージブランチを使用した個人用ビルドです。

https://confluence.jetbrains.com/display/TCD8/Branch+Remote+Run+Trigger

「これらのブランチは通常のバージョン管理ブランチであり、TeamCityはそれらを管理しません(つまり、ブランチが不要になった場合は、通常のバージョン管理手段を使用してブランチを削除する必要があります)。

デフォルトでは、TeamCityは、ブランチの最後のコミットで検出されたユーザーのパーソナルビルドをトリガーします。ブランチの名前でTeamCityユーザーを指定することもできます。これを行うには、パターンでプレースホルダーTEAMCITY_USERNAMEを使用し、ブランチの名前でTeamCityユーザー名を使用します。たとえば、pattern remote-run/TEAMCITY_USERNAME/*は、ブランチremote-run/joe/my_featureと一致し、TeamCityのパーソナルビルドを開始します。ユーザージョー(そのようなユーザーが存在する場合)。」

次に、Bitbucketでカスタムの「PullRequestCreated」Webhookをセットアップします。

https://confluence.atlassian.com/display/BITBUCKET/Tutorial%3A+Create+and+Trigger+a+Webhook

したがって、BitBucket統合の特定のユースケースでは、作成したWebHookを利用して、リモート実行gitコマンドを自動的に実行するシェル/ bashスクリプト(TeamCityサーバーOSに応じて)を作成できます。これにより、 TeamCity Remote RunCIはサーバー上に構築されます。これで、TeamCityUIの+ HEAD:remote-run/my_featureブランチに移動し、機能ごとにリモート実行の結果を表示して、マージするコードのビルド結果に自信を持つことができます。コードのメイン行。

3
BeeTee2

このプラグインを使用することもできます: https://github.com/ArcBees/teamcity-plugins/wiki/Configure-Bitbucket-Pull-Requests-Plugin

(完全開示:私が主な寄稿者です:P、そして私は毎日それを使用しています)

1
meriouma