如何通过合并分支从TFS拉请求中排队Jenkins作业

时间:2019-02-04 14:21:00

标签: git jenkins tfs azure-devops tfsbuild

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

我们想在Pull Request中实现构建验证,因此我们创建了一个将Jenkins作业排队的构建定义,并在“ Job parameters”中输入 BRANCH=$(System.PullRequest.SourceBranch)

enter image description here

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

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

更新:

我看到变量Build.SourceBranch返回合并的分支,但是看起来Jenkins作业不知道该分支。我现在在代理中进行了检查,并且Git在Detached HEAD中,因此我假设没有从代理外部获取选项的方法(即使该代理创建了一个新分支-“合并分支”也仅是本地的)。有什么主意吗?

1 个答案:

答案 0 :(得分: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提取这些合并提交结果。为我工作。