获取PR合并触发器Jenkins声明式多分支管道的请求请求分支修订

时间:2020-03-10 16:51:00

标签: git jenkins pull-request jenkins-declarative-pipeline

在多分支管道中,有一个选项可以构建与基本分支合并的PR。启用此选项后,GIT_COMMIT环境变量将包含合并提交的哈希,而不包含更改分支的最后一个哈希的哈希。分支修订哈希没有设置其他环境变量。

但是我希望分支修订的哈希值运行Sonar PR分析并执行其他一些报告任务。我该如何实现?

https://issues.jenkins-ci.org/browse/JENKINS-39496描述有关PullRequestSCMRevision的信息。但是我不知道如何在声明性管道中的Jenkinsfile中调用PullRequestSCMRevision.getPullHash()函数。

1 个答案:

答案 0 :(得分:1)

我看不到詹金斯支持我的要求。但是,正如@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版本的任何版本(分支,pull request版本,pull request合并版本)。

注意:git rev-parse $BRANCH_NAME可能无法使用请求合并修订版本管道,因为该命令返回的本地分支的修订版与远程分支的修订版不同,这归因于詹金斯。