Как получить pull request id из трубопровода Дженкинса

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

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

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

3 ответов


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

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

эта переменная заполняется только для сборок запроса на вытягивание, поэтому вам нужно отключить сборки ветвей и включить сборки PR в конфигурации вашего конвейера для источников ветвей:

enter image description here

мои трубопровода шаг тогда выглядит так:

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 через например env.BRANCH_NAME.

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

в случае, если ответ Томаса не работает или не применяется к вам, вы также можете (возможно) использовать имя ветви, чтобы получить номер запроса на вытягивание, запросив API REST GitHub. Все, что вам нужно, это маркер API и имя ветви, поиск запросов pull в порядке даты обновленного DESC и найти первый PR, который соответствует вашему имени ветви. Это будет иметь номер запроса Pull.

это работает, только если у вас есть уникальное имя ветви для каждого запроса pull (например, билет Jira issue число.)