Как получить pull request id из трубопровода Дженкинса
Я пытаюсь проанализировать свой исходный код с помощью сонара, используя конвейеры Дженкинса. Чтобы попросить Сонар уведомить Github о результатах, мне нужно указать идентификатор запроса Pull.
как я могу получить этот идентификатор запроса на вытягивание из трубопроводов Дженкинса?
мы используем GitHub Organization Folder Plugin
для построения запросов pull, а не GitHub pull request builder plugin
. Вот почему $ghprbPullId
не работает для меня. Есть идеи, как получить идентификатор запроса pull по-другому?
3 ответов
Дженкинс предоставляет глобальную переменную с именем 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}"
}
}
}
}
вы получаете номер 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 число.)