在TeamCity中的拉取请求合并上运行CI构建

时间:2014-08-12 13:54:41

标签: merge continuous-integration teamcity bitbucket pull-request

我有一个在TeamCity中设置的CI构建,它会在BitBucket(git)中发出拉取请求时触发。它目前是针对pull请求的源分支构建的,但如果它可以构建合并的pull请求则更有意义。

我的研究给我留下了以下可能的解决方案:

  1. 脚本作为构建的一部分运行 - 如果可能的话,不要这样做
  2. 服务器/代理插件 - 找不到足够的文档来确定是否可能
  3. 有没有人在TeamCity之前做过这个或者有关于如何实现它的建议?

    更新(基于John Hoerr回答)

    备用解决方案 - 忘记TeamCity进行合并,使用BitBucket Web钩子创建像github那样的合并分支,并遵循John Hoerr的回答。

4 个答案:

答案 0 :(得分:9)

分支规范 refs/pull-requests/*/merge添加到项目的 VCS Root。这将导致TeamCity监视默认分支的拉取请求的合并输出。

答案 1 :(得分:3)

在我看来,您正在寻找的功能是通过“远程运行”提供的。 TeamCity的功能。这基本上是一个包含合并源和目标合并分支的个人构建。

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

"这些分支是常规版本控制分支,TeamCity不管理它们(即如果您不再需要分支,则需要使用常规版本控制方法删除分支)。

默认情况下,TeamCity会触发在上一次提交分支时检测到的用户的个人构建。您还可以在分支的名称中指定TeamCity用户。为此,在模式中使用占位符TEAMCITY_USERNAME,在分支名称中使用TeamCity用户名,例如模式remote-run / TEAMCITY_USERNAME / *将匹配分支remote-run / joe / my_feature并为TeamCity启动个人构建用户joe(如果存在此类用户)。"

然后设置自定义" Pull Request Created" Webbook in Bitbucket。

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

因此,对于BitBucket集成的特定用例,您可以利用您创建的WebHook,然后自动运行远程运行git命令的shell / bash脚本(取决于您的TeamCity Server OS),在您的服务器上自动触发TeamCity Remote Run CI构建。然后,您可以转到TeamCity UI,+ HEAD:remote-run / my_feature分支,并按功能查看远程运行结果,并对您合并的代码的构建结果充满信心到您的主要代码行。

答案 2 :(得分:3)

似乎BitBucket / Stash在以下情况下为拉取请求创建分支:

来自

的refs / pull-requests //

您应该可以通过Teamcity run-from-branch功能或BitBucket / Stash中的http post receive hook设置该位置的远程运行。

答案 3 :(得分:1)

您也可以使用此插件:https://github.com/ArcBees/teamcity-plugins/wiki/Configuring-Bitbucket-Pull-Requests-Plugin

(完全披露:我是主要贡献者:P,我每天都使用它)