【问题标题】:How to queue Jenkins job from TFS pull request with merged branch如何将 TFS 拉取请求中的 Jenkins 作业与合并的分支进行排队
【发布时间】:2019-06-28 07:29:43
【问题描述】:

我们在 TFS (2017.3) 中有一个 Git 存储库,我们的构建在 Jenkins 上运行。

我们想在拉取请求中实现构建验证,因此我们创建了一个构建定义,将 Jenkins 作业排队并在“作业参数”中输入 BRANCH=$(System.PullRequest.SourceBranch):

问题在于,在 TFS Get Sources 步骤中,TFS 创建了一个临时合并的分支来检查 PR,但 System.PullRequest.SourceBranch 返回的是 PR 源分支(例如功能分支)而不是合并的分支,因此 Jenkins 作业运行在源分支上而不检查 PR。

我们可以将合并后的分支发送给 Jenkins,还是必须在 Jenkins 工作中进行合并?

更新:

我看到变量 Build.SourceBranch 返回了合并的分支,但看起来 Jenkins 工作不知道这个分支。我现在检查了代理并且 Git 位于 Detached HEAD 中,所以我假设没有选项可以从代理外部获取(即使代理创建了一个新分支 - “合并分支”它只是本地的)。有什么想法吗?

【问题讨论】:

  • 只是瞎拍,会不会是分行名里有空格?我不确定在这种情况下扩展 BRANCH=$(...) 是如何不带引号的。
  • 嗨大卫,树枝上没有空格:(

标签: git jenkins tfs azure-devops tfsbuild


【解决方案1】:

我假设您使用 Jenkins TFS 插件来触发 Jenkins 作业。

在这种情况下,根据插件official documentation(“Git”部分),您需要在 Git Checkout 步骤中将 +refs/heads/*:refs/remotes/origin/* +refs/pull/*:refs/remotes/origin-pull/* 添加到 Refspec 设置。

TFS 将拉取请求合并提交存储在名为 pull/<PR number>/head 的临时分支中。通过添加Refspec,您将允许 Jenkins 获取这些合并提交结果。对我有用。

【讨论】:

  • 谢谢!我们已经没有在 PR 中使用 tfs - jenkins 了,但这听起来是对的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-20
  • 2021-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多