我正在尝试使用Jenkins流水线通过Sonar分析我的源代码。为了请求Sonar将结果通知给GitHub,我需要指定拉取请求ID。
我该如何从Jenkins流水线中获取此Pull Request ID?
我们正在使用 GitHub组织文件夹插件
来构建拉取请求,而不是 GitHub拉取请求构建器插件
。这就是为什么 $ghprbPullId
对我不起作用的原因。有任何想法以不同的方式获取拉取请求ID吗?
我正在尝试使用Jenkins流水线通过Sonar分析我的源代码。为了请求Sonar将结果通知给GitHub,我需要指定拉取请求ID。
我该如何从Jenkins流水线中获取此Pull Request ID?
我们正在使用 GitHub组织文件夹插件
来构建拉取请求,而不是 GitHub拉取请求构建器插件
。这就是为什么 $ghprbPullId
对我不起作用的原因。有任何想法以不同的方式获取拉取请求ID吗?
Jenkins公开了一个名为CHANGE_ID的全局变量:
对于相应于某种更改请求的多分支项目,它将被设置为更改ID,例如拉取请求编号。
此变量仅适用于拉取请求构建,因此您必须在分支来源的管道配置中禁用分支构建并启用PR构建:
我的管道步骤如下:
def PULL_REQUEST = env.CHANGE_ID
stage('Analysis') {
withCredentials([[$class: 'StringBinding', credentialsId: '***', variable: 'GITHUB_ACCESS_TOKEN']]) {
withSonarQubeEnv('Sonar') {
withMaven(maven: 'M3') {
sh "mvn org.sonarsource.scanner.maven:sonar-maven-plugin:3.2:sonar " +
"-Dsonar.analysis.mode=preview " +
"-Dsonar.github.pullRequest=${PULL_REQUEST} " +
"-Dsonar.github.oauth=${GITHUB_ACCESS_TOKEN}"
}
}
}
}
pr-
开头? - dimwittedanimalenv.BRANCH_NAME
获取PR编号。if (env.BRANCH_NAME.startsWith('PR-')) {
def prNum = env.BRANCH_NAME.replace(/^PR-/, '')
...
}
prNumber = env.BRANCH_NAME.replace('PR-', '')
。 - Dzmitry Hubin