在多分支管道中,有一个选项可以构建与基本分支合并的PR。启用此选项后,GIT_COMMIT环境变量将包含合并提交的哈希,而不包含更改分支的最后一个哈希的哈希。分支修订哈希没有设置其他环境变量。
但是我希望分支修订的哈希值运行Sonar PR分析并执行其他一些报告任务。我该如何实现?
https://issues.jenkins-ci.org/browse/JENKINS-39496描述有关PullRequestSCMRevision。但是我不知道如何在声明性管道中的Jenkinsfile中调用PullRequestSCMRevision.getPullHash()函数。
我看不到我的要求得到詹金斯的支持。但是正如@Omer在上述注释中所建议的,我们可以通过在Jenkinsfile中调用git rev-parse remotes/origin/$BRANCH_NAME
来完成工作。您可以通过在脚本化环境变量中按如下所示调用它,将新的环境变量引入声明性管道的构建环境中。
REVISION = """${
sh(
returnStdout: true,
script: '''
if [ ${CHANGE_ID+x} ]; then
git rev-parse remotes/origin/$BRANCH_NAME
else
echo "$GIT_COMMIT"
fi
'''
).trim()
}"""
然后,您可以使用REVISION
环境变量来引用git版本的任何版本(分支,合并请求版本,合并请求合并版本)。
注意: git rev-parse $BRANCH_NAME
可能无法使用请求合并修订版本管道,因为由于Jenkins进行了自动合并提交,因此此命令返回的本地分支的修订与远程分支的修订不同。