在 TeamCity 中基于拉取请求合并运行 CI 构建

问题描述 投票:0回答:5

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

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

  1. 脚本作为构建的一部分运行 - 如果可能的话不要这样做
  2. 服务器/代理插件 - 没有找到足够的文档来确定这是否可行

是否有人以前在 TeamCity 中做过此操作或对如何实现它有建议?

更新:(基于 John Hoerr 的回答)

替代解决方案 - 忘记 TeamCity 进行合并,使用 BitBucket Web hooks 创建一个合并分支,就像 github 所做的那样,并遵循 John Hoerr 的答案。

merge continuous-integration teamcity bitbucket pull-request
5个回答
10
投票

分支规范

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


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(如果存在这样的用户)。”

然后在 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 分支,并按功能查看远程运行结果,并对合并到您的代码的构建结果充满信心。主线代码。


3
投票

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

参考/拉请求//来自

您应该能够通过 Teamcity run-from-branch 功能或通过 BitBucket/Stash 中的 http post 接收挂钩为该位置设置远程运行。


1
投票

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

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


0
投票

是否有任何文档描述如何“使用 BitBucket Web hooks 创建像 github 那样的合并分支”?

我尝试了很多不同的选项来让 TC 在打开 BitBucket Cloud PR 时触发构建,但没有成功。 这看起来是一个很好的解决方案,但我对 webhooks 不是特别熟悉。

© www.soinside.com 2019 - 2024. All rights reserved.