我们在TFS(2017.3)中有Git存储库,我们的构建在Jenkins上运行。
我们想在Pull Request中实现构建验证,因此我们创建了一个对Jenkins作业进行排队的构建定义,并在“作业参数”中输入BRANCH=$(System.PullRequest.SourceBranch)
:
问题是在TFS获取源步骤中,TFS创建一个临时合并的分支来检查PR,但是System.PullRequest.SourceBranch
返回PR源分支(例如功能分支)而不是合并分支,因此Jenkins作业在源分支上运行不检查公关。
我们可以向Jenkins发送合并的分支,还是我们必须在Jenkins工作中进行合并?
更新:
我看到变量Build.SourceBranch
返回合并的分支但看起来像詹金斯的工作不知道这个分支。我现在检查代理并且Git在Detached HEAD中,所以我假设没有从代理外部获取的选项(即使代理创建了一个新分支 - “merged branch”它只是本地的)。任何的想法?
我假设您使用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获取这些合并提交结果。适合我。