Jenkins + сонар + интеграция github
Проблема: Я настраиваю интеграцию jenkins + sonar + github для автоматической проверки статического кода pullrequest через сонар.
Моя конфигурация:
-Dsonar.github.login=bhuwang
-Dsonar.github.repository=company/repo
-Dsonar.verbose=true
-Dsonar.analysis.mode=preview
-Dsonar.issuesReport.console.enable=true
-Dsonar.forceUpdate=true
-Dsonar.github.login=gitusername
-Dsonar.github.oauth=token
- Токен был создан из моей учетной записи github.
В этой ссылке Я прочитал, что при запуске sonarqube необходимо предоставить следующие свойства:
![введите описание изображения здесь]()
Я добавил все, кроме свойств sonar.github.pullRequest. Я не знаю, как получить динамическое значение этого свойства. Кажется, что выше четырех свойств должны работать должным образом.
Изменить: Я нашел способ добавить свойство -Dsonar.github.pullRequest = pullrequestNo
И хорошая новость заключается в том, что теперь он отлично работает с жестко запрограммированным запросом на тягу no. но мне нужен динамический способ получить запрос на pull нет.
Кто-нибудь знает, как получить запрос на вытягивание нет. динамически внутри jenkins.?
Я обнаружил, что построитель запросов на запрос будет работать, но мне не повезло. Я не могу использовать переменные среды builder builder в свойствах сонара.
https://issues.jenkins-ci.org/browse/JENKINS-24590
Ответы
Ответ 1
Наконец, я могу решить эту проблему. Вот деталь:
Следуйте этой ссылке, чтобы настроить плагин построителя pull-запроса: https://wiki.jenkins-ci.org/display/JENKINS/GitHub+pull+request+builder+plugin#GitHubpullrequestbuilderplugin-EnvironmentVariables
-
- Настройка глобальной системы Jenkins:
Перейти к управлению Jenkins → Конфигурирование системы
Настройка jdk
Установите SonarQube Runner
Настройка сонара
GIT Настройка WebHook
Настройка PullRequest Builder
![введите описание изображения здесь]()
- Создать бесплатный стиль Jenkins
![введите описание изображения здесь]()
добавить github url в раздел проекта GitHub
![введите описание изображения здесь]()
Раздел управления исходным кодом установки
![введите описание изображения здесь]()
Настройка триггера сборки
![введите описание изображения здесь]()
Настройка сонара для действий после сборки
![введите описание изображения здесь]()
В разделе дополнительных свойств приведены следующие свойства сонара
-Dsonar.sourceEncoding=UTF-8
-Dsonar.analysis.mode=preview
-Dsonar.github.repository=company/repo
-Dsonar.github.login=gitusername
-Dsonar.github.oauth=oauthtoken
-Dsonar.host.url=sonarhostedurl
-Dsonar.login=admin
-Dsonar.password=pass
-Dsonar.github.pullRequest=${ghprbPullId}
${ghprbPullId}: this will be provided via github pullrequest builder plugin
Примечание. Задание должно запускаться через плагин pullrequest builder, иначе ${ghprbPullId} вернет пустое значение. Если вы запустили задание вручную, это не сработает, потому что вы должны передать это свойство ${ghprbPullId} в качестве параметра сборки. Если вы хотите проверить доступные параметры среды, следуйте этим переменным среды GIT для использования при выполнении сценариев оболочки Jenkins
Надеюсь, это поможет.
Ответ 2
Слишком долго для комментария, поэтому мне придется написать его здесь.
После некоторых исследований в Интернете я нашел вопрос о SO от кого-то на несколько шагов впереди вас при попытке настроить аналогичную систему, . Они пытаются заставить все работать с Maven, я не уверен, что вы тоже, но в любом случае вы можете увидеть ссылку, которую они использовали, чтобы помочь им с их script:
https://github.com/SonarSource/sonarqube/blob/master/travis.sh
Это показывает, что им нужно написать script, который будет динамически извлекать номер тяги для них. Я думаю, вам, возможно, придется следовать аналогичному подходу и написать script, который будет извлекать номер для вас, я считаю, что один из файлов conf в github отслеживает текущий номер запроса на изъятие для собственных целей отслеживания.
Не так, как прямой ответ, как вы могли надеяться, но, надеюсь, это новая информация, которая поможет вам добраться.