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