我在 TeamCity 中设置了一个 CI 构建,当在 BitBucket (git) 中发出拉取请求时,该构建将触发。它目前是针对拉取请求的源分支构建的,但如果它可以构建合并的拉取请求,那就更有意义了。
我的研究给我留下了以下可能的解决方案:
是否有人以前在 TeamCity 中做过此操作或对如何实现它有建议?
更新:(基于 John Hoerr 的回答)
替代解决方案 - 忘记 TeamCity 进行合并,使用 BitBucket Web hooks 创建一个合并分支,就像 github 所做的那样,并遵循 John Hoerr 的答案。
将分支规范
refs/pull-requests/*/merge
添加到项目的VCS根。这将导致TeamCity监视默认分支的拉取请求的合并输出。
在我看来,您正在寻找的功能是通过 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(如果存在这样的用户)。”
然后在 Bitbucket 中设置自定义“已创建拉取请求”Webhook。
https://confluence.atlassian.com/display/BITBUCKET/Tutorial%3A+Create+and+Trigger+a+Webhook
因此,对于 BitBucket 集成的特定用例,您可以利用您创建的 WebHook,然后有一个 shell / bash 脚本(取决于您的 TeamCity 服务器操作系统)自动运行远程运行 git 命令,这将自动触发TeamCity Remote Run CI 在您的服务器上构建。然后,您将能够转到 TeamCity UI,+HEAD:remote-run/my_feature 分支,并按功能查看远程运行结果,并对合并到您的代码的构建结果充满信心。主线代码。
似乎 BitBucket/Stash 在以下位置为拉取请求创建分支:
参考/拉请求//来自
您应该能够通过 Teamcity run-from-branch 功能或通过 BitBucket/Stash 中的 http post 接收挂钩为该位置设置远程运行。
您还可以使用此插件:https://github.com/ArcBees/teamcity-plugins/wiki/Configuring-Bitbucket-Pull-Requests-Plugin
(完全披露:我是主要贡献者:P,我每天都使用它)
是否有任何文档描述如何“使用 BitBucket Web hooks 创建像 github 那样的合并分支”?
我尝试了很多不同的选项来让 TC 在打开 BitBucket Cloud PR 时触发构建,但没有成功。 这看起来是一个很好的解决方案,但我对 webhooks 不是特别熟悉。