Сонарный анализ с использованием нескольких веток git в Jenkins

Я настроил Jenkins для автоматического создания нескольких веток git моего проекта. Сборка также запускает анализ Sonar в качестве действия после сборки.

Проблема в том, что все ветки указывают на один и тот же проект Sonar. Я знаю, что есть свойство sonar.branch. Возможно ли, чтобы Jenkins автоматически устанавливал свойство sonar.branch для текущей создаваемой ветки git (без необходимости изменять проект pom.xml)?


person spyk    schedule 24.03.2013    source источник


Ответы (4)


Вы можете попробовать добавить -Dsonar.branch.name=something в поле MAVEN_OPTS в действии после сборки jenkins (расширенная конфигурация).

Я не знаю, как разрешить something, так как я не знаю, как вы настраиваете свою работу jenkins... но, вероятно, это будет что-то вроде $git.branch.

Я не пробовал, поэтому не уверен, что это сработает.

В многоветвевом конвейере Jenkins используется переменная BRANCH_NAME.

P.S. Читая ваш вопрос, трудно сказать, используете ли вы maven или нет для запуска сонара. Если вы не используете maven: project properties в конфигурации Jenkins, где вы можете определить sonar.branch.

person ben75    schedule 24.03.2013
comment
В итоге я использовал предложенный вами подход, используя разные задания для каждой ветки. Я использую Jenkins для запуска сонара, поэтому я соответствующим образом устанавливаю свойство sonar.branch для каждого задания. Я думаю, что это также имеет то преимущество, что задание сборки запускается только в том случае, если для этой конкретной ветки сделана фиксация, а также вы можете создать более мелкозернистый контроль/уведомления расписания сборки для более важных ветвей и т. д. - person spyk; 25.03.2013
comment
У меня не работает :-( Я добавил $GIT_BRANCH в MAVEN_OPTS. Тем не менее, когда я строю из какой-то другой ветки через какое-то другое задание, панель инструментов, показывающая покрытие, меняется на результаты последнего запуска ветки. Я хочу, чтобы она оставалась неизменной для моя ветка. - person R11G; 05.07.2013
comment
Имя ветки будет обработано либо как переменная env, либо как интерполяция скрипта. - person Antoniossss; 28.12.2018
comment
Я думаю, что свойство sonar.branch.name доступно только в коммерческих версиях, но не в версии для сообщества. - person Datz; 21.01.2020
comment
@Datz, когда был задан этот вопрос, 7 лет назад, он был доступен в Community Edition. Вы правы, что теперь это только в Developer Edition и выше. - person Denham Coote; 09.12.2020

Это должно работать

mvn sonar:sonar -U -Dsonar.branch.name=$BRANCH_NAME
person Gnani    schedule 31.08.2017

Я не уверен, поможет ли это вам с автоматическим выполнением Jenkins, но для запуска mvn sonar:sonar с правильным набором ветвей вы можете запустить команду (обратите внимание на обратные кавычки), если вы находитесь в среде на основе Unix:

mvn -Dsonar.branch=`git rev-parse --abbrev-ref HEAD` sonar:sonar
person JeanMarc    schedule 02.12.2013

Вы использовали параметры сборки, чтобы указать ветку?

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

sonar.branch=${branch}

Где ветка — это имя параметра сборки.

person Thomas Decaux    schedule 18.02.2015