Jenkins + сонар + интеграция github

Проблема: Я настраиваю интеграцию jenkins + sonar + github для автоматической проверки статического кода pullrequest через сонар.

Моя конфигурация:

  • Установленный сонар с github

  • Установленные jenkins

  • В jenkins post-build action у меня есть следующие свойства

-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
  1. Токен был создан из моей учетной записи github.

В этой ссылке Я прочитал, что при запуске sonarqube необходимо предоставить следующие свойства: введите описание изображения здесь

Я добавил все, кроме свойств sonar.github.pullRequest. Я не знаю, как получить динамическое значение этого свойства. Кажется, что выше четырех свойств должны работать должным образом.

Изменить: Я нашел способ добавить свойство -Dsonar.github.pullRequest = pullrequestNo

И хорошая новость заключается в том, что теперь он отлично работает с жестко запрограммированным запросом на тягу no. но мне нужен динамический способ получить запрос на pull нет.

Кто-нибудь знает, как получить запрос на вытягивание нет. динамически внутри jenkins.?

Я обнаружил, что построитель запросов на запрос будет работать, но мне не повезло. Я не могу использовать переменные среды builder builder в свойствах сонара.

https://issues.jenkins-ci.org/browse/JENKINS-24590

Ответы

Ответ 1

Наконец, я могу решить эту проблему. Вот деталь:

  • Установите Sonar с плагином GitHub.
  • Установите Jenkins со следующими плагинами

    • GitHub Pull Request Builder
    • Плагин SonarQube
    • GIT плагин
    • Плагин GitHub

Следуйте этой ссылке, чтобы настроить плагин построителя pull-запроса: https://wiki.jenkins-ci.org/display/JENKINS/GitHub+pull+request+builder+plugin#GitHubpullrequestbuilderplugin-EnvironmentVariables

    1. Настройка глобальной системы Jenkins:
Перейти к управлению Jenkins → Конфигурирование системы Настройка jdk введите описание изображения здесь Установите SonarQube Runner введите описание изображения здесь Настройка сонара введите описание изображения здесь GIT Настройка WebHook введите описание изображения здесь

Настройка PullRequest Builder введите описание изображения здесь

  1. Создать бесплатный стиль 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 отслеживает текущий номер запроса на изъятие для собственных целей отслеживания.

Не так, как прямой ответ, как вы могли надеяться, но, надеюсь, это новая информация, которая поможет вам добраться.