Запуск сканера SonarQube на удаленном подчиненном устройстве Jenkins - PullRequest
0 голосов
/ 07 января 2019

У меня есть контейнер Docker под управлением Jenkins (2.150.1) и другой контейнер Docker под управлением SonarQube (7.4). Jenkins использует плагин SonarQube Scanner для Jenkins , и сканирование выполняется в контейнере Jenkins. Jenkinsfile для проекта выглядит так:

pipeline {
  agent any
  stages {
    stage('Build') {
      steps {
        echo 'building...'
      }
    }
    stage('Test') {
      steps {
        echo 'testing...'
        withSonarQubeEnv ('SonarQube') {
          sh '/var/jenkins_home/sonar-scanner/sonar-scanner-3.2.0.1227-linux/bin/sonar-scanner'
        }
        echo 'really finished testing2'
      }
    }
    stage("Quality Gate") {
        steps {
            timeout(time: 1, unit: 'MINUTES') {
              waitForQualityGate abortPipeline: true
            }
        }
    }
    stage('Deployment') {
      steps {
        echo 'deploying...'
      }
    }
  }
}

Чтобы сканирование работало как часть конвейерного задания Jenkins, я вручную установил sonar-scanner в контейнер Jenkins, загрузив zip-файл и разархивировав его в: /var/jenkins_home/sonar-scanner/sonar-scanner-3.2.0.1227-linux

Это работает хорошо, но я хочу улучшить это:

  1. вычеркнуть изогнутый путь к sonar-scanner из моего Jenkinsfile
  2. укажите нелокальное расположение sonar-scanner, потому что теперь мне нужно запустить сканирование на другой виртуальной машине / контейнере, а не на контейнере Jenkins

Я пытался использовать Manage Jenkins> Global Tool Configuration> SonarQube Scanner и обновил свой Jenkinsfile, чтобы использовать SONAR_RUNNER_HOME вместо жестко заданного пути, но это не сработало, и я получил ошибку, что sonar-scanner can ' не может быть найдено.

enter image description here

1 Ответ

0 голосов
/ 28 мая 2019

In Manage Jenkins> Глобальная конфигурация инструмента> Проверка сканера SonarQube install automatically.

Затем перейдите в Управление Jenkins> Настроить систему и добавьте следующее enter image description here

Имя должно совпадать с параметром в строке в вашем Jenkinsfile: withSonarQubeEnv('SonarQube')

...