Прежде всего, как я уже упоминал в своем вопросе, глобальное изменение конфигурации Gerri
t и новый сервер Gerrit
не были для меня опцией. Мне нужно было решить эту проблему на уровне работы Дженкинса.
Я нашел «решение», которое скорее обходное, но оно работает.
Шаг 0:
Если вы проверяете STDOUT
из SonarQube
в журнале консоли Jenkins
, вы можете увидеть конкретную строку, которая указывает количество проблем, которые влияют на вычисление оценки. Эта строка: Issues to be involved in score calculation: X
. Это означает, что вы можете знать, есть ли затронутые проблемы или нет, основываясь на этой строке.
Шаг 1:
Вам следует проверить журнал консоли Jenkins
и найти количество проблем, которые связаны с подсчетом очков. Вы можете увидеть ниже мою реализацию для этого. Если есть проблема (значение RegEx
не равно нулю), тогда на этом этапе следует установить результат сборки на UNSTABLE
.
stage('Results') {
steps {
script{
for(String line : currentBuild.getRawBuild().getLog(30)){
def find_pattern = (line =~ /^Issues to be involved in score calculation: [1-9]/)
if(find_pattern){
echo line
echo "Sonar has found warnings in changed lines. Build goes to UNSTABLE."
currentBuild.result = "UNSTABLE"
}
}
}
Пример вывода о том, как это работает:
Report has loaded and contains 1021 issues
Issues to be commented: 1
Issues to be involved in score calculation: 1
Review has been sent
[Pipeline] }
[Pipeline] // withSonarQubeEnv
[Pipeline] }
[Pipeline] // ansiColor
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Results)
[Pipeline] script
[Pipeline] {
[Pipeline] echo
Issues to be involved in score calculation: 1
[Pipeline] echo
Sonar has found warnings in changed lines. Build goes to UNSTABLE.
Шаг 2:
Сконфигурируйте блок Gerrit Reporting Values
, чтобы вернуть оба значения (метки CR и Verified) обратно в Gerrit
в случае UNSTABLE
Результат построения.