Выполнить сканер SonarQube в трубопроводе Jenkins 2

Я хочу выполнить шаг "Сканер SonarQube" в моем конвейере Jenkins 2.x.

Когда я пытаюсь создать образец groovy в конвейерном синтаксисе, я получаю только groovy скрипт следующего формата:

step <object of type hudson.plugins.sonar.SonarRunnerBuilder>

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

step([$class: 'JUnitResultArchiver', testResults: ''])

Я использую следующие версии:

  • Дженкинс 2.11
  • SonarQube Scanner 2.6.1
  • SonarQube Plugin 2.4.1

3 ответа

Решение

Я думаю, что понял. Сначала вам нужно получить сканер SonarQube.

def sonarqubeScannerHome = tool name: 'SonarQubeScanner', type: 'hudson.plugins.sonar.SonarRunnerInstallation'

Затем вы можете вызвать сонар-сканер через Shell:

sh "${sonarqubeScannerHome}/bin/sonar-scanner -e -Dsonar.host.url=..."
env.sonarHome= tool name: 'scanner-2.4', type: 'hudson.plugins.sonar.SonarRunnerInstallation'

withSonarQubeEnv('sonar.installation') { // from SonarQube servers > name
  sh "${sonarHome}/bin/sonar-runner -Dsonar.host.url=${SONAR_HOST_URL}  -Dsonar.login=${SONAR_AUTH_TOKEN}    -Dsonar.projectName=xxx -Dsonar.projectVersion=xxx -Dsonar.projectKey=xxx -Dsonar.sources=."

}

Вместо этого вы можете просто указать полный путь к вашему сонару-бегуну. Как показано в приведенном ниже фрагменте.

def runSonarScan(sonar_url){
    withEnv(['SONAR_HOST=' + sonar_url]) {
        sh '''
        $/opt/sonarqube/sonar-runner-2.4/bin/sonar-runner -e -Dsonar.host.url=${SONAR_HOST}
        '''
    }
}

Если у вас есть определенные свойства сонара, добавьте их в файл sonar-project.properties, как показано здесь. Свойства проекта сонара

Другие вопросы по тегам