繁体   English   中英

获取 pr-merge 触发器 Jenkins 声明性多分支管道的拉取请求分支修订

[英]Get pull request branch revision for pr-merge trigger Jenkins declarative multibranch pipeline

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

但我希望分支修订的散列运行声纳 PR 分析和其他一些报告任务。 我怎样才能做到这一点?

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

我没有看到 Jenkins 支持我的要求。 但正如@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 完成自动合并提交,该版本与远程分支不同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM