TeamCityでセットアップされたCIビルドがあり、BitBucket(git)でプルリクエストが行われたときにトリガーされます。現在、プルリクエストのソースブランチに対してビルドされていますが、マージされたプルリクエストをビルドできれば、より意味があります。
私の研究により、次の可能な解決策が残されました。
TeamCityで以前にこれを行った人はいますか、それを達成する方法について提案がありますか?
更新:(ジョン・ヘアの回答に基づく)
別の解決策-TeamCityがマージを行うことを忘れ、BitBucket Webフックを使用してgithubのようにマージされたブランチを作成し、JohnHoerrの回答に従います。
ブランチ仕様refs/pull-requests/*/merge
をプロジェクトのVCSルートに追加します。これにより、TeamCityはデフォルトブランチのプルリクエストのマージされた出力を監視します。
BitBucket/Stashは次の場所でプルリクエストのブランチを作成しているようです。
refs/pull-requests // from
Teamcityのブランチからの実行機能、またはBitBucket/Stashのhttppost receiveフックのいずれかによって、その場所のリモート実行をセットアップできるはずです。
あなたが探している機能は、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ブランチに移動し、機能ごとにリモート実行の結果を表示して、マージするコードのビルド結果に自信を持つことができます。コードのメイン行。
このプラグインを使用することもできます: https://github.com/ArcBees/teamcity-plugins/wiki/Configure-Bitbucket-Pull-Requests-Plugin
(完全開示:私が主な寄稿者です:P、そして私は毎日それを使用しています)