我们在TFS(2017.3)中拥有Git存储库,并且我们的构建在Jenkins上运行。
我们想在Pull Request中实现构建验证,因此我们创建了一个将Jenkins作业排队的构建定义,并在“ Job parameters”中输入
BRANCH=$(System.PullRequest.SourceBranch)
:
问题在于,在TFS获取源代码步骤中,TFS创建了一个临时合并的分支来检查PR,但是System.PullRequest.SourceBranch
返回PR的源分支(例如要素分支)而不是合并的分支,因此Jenkins作业在源分支上运行,而不检查PR。
我们可以将合并后的分支发送给Jenkins,还是必须在Jenkins工作中进行合并?
更新:
我看到变量Build.SourceBranch
返回合并的分支,但是看起来Jenkins作业不知道该分支。我现在在代理中进行了检查,并且Git在Detached HEAD中,因此我假设没有从代理外部获取选项的方法(即使该代理创建了一个新分支-“合并分支”也仅是本地的)。有什么主意吗?
答案 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提取这些合并提交结果。为我工作。