Как получить идентификатор запроса на получение запроса от Jenkins Pipeline

Я пытаюсь проанализировать свой исходный код с помощью Sonar, используя конвейеры Jenkins. Чтобы спросить, что Sonar уведомит Гитуба о результатах, мне нужно указать идентификатор запроса Pull.

Как я могу получить этот идентификатор запроса Pull от трубопроводов Jenkins?

Мы используем GitHub Organization Folder Plugin для создания запросов на тягу, а не GitHub pull request builder plugin. Вот почему $ghprbPullId не работает для меня. Любые идеи о том, как получить идентификатор запроса pull по-другому?

Ответ 1

Jenkins предоставляет глобальную переменную с именем CHANGE_ID:

Для многобрендового проекта, соответствующего некоторому изменить запрос, это будет установлено на идентификатор изменения, такой как вытягивание номер запроса.

Эта переменная заполняется только для сборочных запросов pull, поэтому вам нужно отключить сборки ветвей и включить 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}"
                }
            }
        }
    }

Ответ 2

Вы получаете номер PR, например env.BRANCH_NAME.

if (env.BRANCH_NAME.startsWith('PR-')) {
    def prNum = env.BRANCH_NAME.replace(/^PR-/, '')
    ...
}