我有一个在TeamCity中设置的CI构建,它会在BitBucket(git)中发出拉取请求时触发。它目前是针对pull请求的源分支构建的,但如果它可以构建合并的pull请求则更有意义。
我的研究给我留下了以下可能的解决方案:
有没有人在TeamCity之前做过这个或者有关于如何实现它的建议?
更新(基于John Hoerr回答)
备用解决方案 - 忘记TeamCity进行合并,使用BitBucket Web钩子创建像github那样的合并分支,并遵循John Hoerr的回答。
答案 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,我每天都使用它)