使用TeamCity和Github构建对特定分支的拉取请求

时间:2015-09-09 15:38:27

标签: github teamcity

我希望TeamCity构建对特定目标分支的所有拉取请求,例如develop
所以,我想建立以下拉取请求:

develop...foo_branch
develop...bar_branch

并跳过这个:

master...foo_branch
master...bar_branch

在TeamCity中,我可以定义branch specification来构建所有拉取请求:

+:refs/pull/*/head

或按源分支定义过滤器:

-:refs/heads/(spikes-*)

但我需要通过目标分支进行过滤。有可能吗?

3 个答案:

答案 0 :(得分:7)

我写了一个脚本来解决这个问题。它可以作为TC构建配置中的第一个构建步骤之一运行。该脚本将从Github请求拉取请求详细信息,解析响应并将源和目标分支名称注入TeamCity参数和环境变量。在下一个构建步骤中,您将能够根据这些变量中止构建或执行其他任何操作。

https://gist.github.com/dzzh/a6d8631e9617777fb5237bc9ec7b356b

要使脚本生效,您必须提交PR的id作为命令行参数。我们使用推荐的refspec(refs / pulls / * / head)来运行我们的构建,我从中提取PR id并用它调用脚本。

答案 1 :(得分:4)

目前,根据TeamCity中的目标分支,无法区分拉取请求分支。请观看/投票支持即将发布的计划请求https://youtrack.jetbrains.com/issue/TW-43759

答案 2 :(得分:0)

构建功能:提取请求

拉取请求支持在TeamCity中作为构建功能实现。该功能扩展了VCS根目录的原始分支规范,以包括符合指定过滤条件的拉取请求。

要配置对构建配置的请求请求支持,请转到构建配置设置|构建功能,单击添加构建功能,然后从对话框的下拉列表中选择拉取请求功能。

来源:https://blog.jetbrains.com/teamcity/2019/08/building-github-pull-requests-with-teamcity/

因此,过滤是通过 Build Feature:Pull Request 完成的,其中By target branch:应设置为目标集分支,例如refs/head/masterrefs/head/myspecialbranch < / p>