Автоматически выводить обязательные свойства SonarQube из POM-файла в Jenkins
ситуация:
Я хочу проанализировать свой проект с помощью SonarQube (5.4), инициированного Дженкинсом (1.642.4). Это сборка проекта java с maven.
Я вижу два способа запуска анализа:
- Post Build Action "анализ SonarQube с maven", но это устаревший, Так что я не хочу использовать
- шаг сборки Post "выполнить сканер SonarQube", рекомендуется путь.
проблема:
Если я использую устаревшее действие Post Build, свойства для конфигурации проекта sonar автоматически выводятся из project pom.
Я использую рекомендуемый шаг сборки Post, Я получаю исключение
необходимо определить следующие обязательные свойства для 'Unknown': sonar.projectKey, сонар.имя_проекта, сонар.проектверсия, сонар.источники
Нежелательное Решение:
решение заключается в предоставлении необходимых свойств через sonar-project.файл свойств в проекте java или через параметры на шаге Дженкинса.
ИМХО: это дублирование. Вся соответствующая информация определяется в Maven pom: projectKey может быть получена из artifactId, projectName и projectVerstion являются одинаковыми свойствами в maven. Особенно важна проектверсия. Я не хочу обновите версию проекта после каждого выпуска (или напишите код в плагине выпуска, чтобы обновить его автоматически).
что я хочу!--2-->
Я хочу использовать рекомендуемый шаг сборки Post в Jenkins, без переопределения всех свойств проекта для всего моего проекта, чтобы сделать сонар счастливым. Вместо этого sonar/jenkins/plugin / все, что должно получить свойства из моего файла maven pom. Есть дополнительный плагин, который я могу использовать? Могу ли я перенастроить свой Дженкинс-Сонар-Плагин?
Я не хочу предоставлять какую-либо конкретную информацию о сонаре в моем pom/project, потому что проект не должен заботиться о сонаре. Он должен содержать только информацию, необходимую для построения проекта.
2 ответов
документация (хотя это немного запутанно, см. edit ниже) объясняет, как использовать общий шаг после сборки (использование переменных среды) вместо устаревшего действия после сборки. короче:
- установить последний плагин SonarQube (v2.4 на данный момент) в Дженкинсе
- в конфигурации системы под серверами SonarQube: проверьте
Enable injection of SonarQube server configuration as build environment variables
- в конфигурации вашего проекта Maven:
- Регистрация
Prepare SonarQube Scanner environment
- добавить шаг после сборки
Invoke top-level Maven targets
и использовать введенные переменные среды вGoals
поле например:$SONAR_MAVEN_GOAL-Dsonar.хозяин.URL-адрес=$SONAR_HOST_URL -Dsonar.login=$SONAR_AUTH_TOKEN
- Регистрация
редактировать: для документация говорит The Post-build Action for Maven analysis is deprecated.
, это относится к старому post-build действие который больше не документирован. Пункт после это предупреждение (резюмированное в этом ответе) действительно является рекомендуемой процедурой. Иллюстрация здесь если это все еще не ясно.
используя сканер SonarQube в качестве шага сборки post, вы можете настроить его, по крайней мере, с этими свойствами в свойствах анализа:
sonar.projectKey=${POM_ARTIFACTID}
sonar.projectName=${POM_DISPLAYNAME}
sonar.projectVersion=${POM_VERSION}
sonar.sources=src
sonar.java.binaries=target
sonar.language=java
sonar.sourceEncoding=UTF-8
POM_* переменные отображаются Дженкинсом из maven GAV info, смотрите здесь:https://github.com/jenkinsci/jenkins/pull/933/files