【问题标题】:Build pull requests to specific branch using TeamCity and Github使用 TeamCity 和 Github 向特定分支构建拉取请求
【发布时间】:2018-04-04 01:41:36
【问题描述】:

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

develop...foo_branch
develop...bar_branch

跳过这个:

master...foo_branch
master...bar_branch

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

+:refs/pull/*/head

或按源分支定义过滤器:

-:refs/heads/(spikes-*)

但我需要按 target 分支过滤。有可能吗?

【问题讨论】:

  • 希望得到这个答案,一点一点。
  • 我也想知道答案。
  • 我也有同样的问题。很想得到答案

标签: github teamcity


【解决方案1】:

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

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

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

【讨论】:

  • 如何取消构建而不在 GitHub PR 中显示失败消息?我找到了confluence.jetbrains.com/display/TCD10/Build+Failure+Conditions,这会让我立即停止不正确的构建,但这不会仍然向 GitHub 报告构建失败吗?因此,如果我针对 release-2.6 分支构建 PR 但我有 3 个构建配置,我会看到 2 条失败状态消息“构建 master 失败”; “构建release-2.5失败”和只有一条成功状态消息“构建release-2.6成功”。你知道如何在不向 GitHub 报告失败的情况下中止构建吗?
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    构建功能:拉取请求

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

    要为构建配置配置拉取请求支持,请转到 构建配置设置 | Build Features,点击Add build feature,然后从对话框的下拉列表中选择Pull Requests功能。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-20
      • 2013-12-12
      • 1970-01-01
      • 2021-11-18
      • 1970-01-01
      • 2022-08-13
      • 1970-01-01
      相关资源
      最近更新 更多