SonarScanner настроен в инструментах Jenkins, но «$ {scannerHome}» не распознается как внутренняя или внешняя команда - PullRequest
1 голос
/ 01 марта 2020

я пытаюсь использовать SonarQube внутри моего Jenkinsfile

pipeline{
    agent any 
    stages{
        stage('build'){
            steps{
                // invoke command to build with maven
                bat 'mvn clean install'
            }
        }

        stage('SonarQube') {
            environment {
                scannerHome = tool 'SonarQubeScanner'
            }
            steps {
                withSonarQubeEnv('SonarQube') { 
                    bat '${scannerHome}/bin/sonar-scanner.bat'
                }
            }
         }
    }
}

это мой сервер SonarQube SonarQube

, а это SonarScanner

sonarScanner

что не так с withSonarQubeEnv step:

withSonarQubeEnv('SonarQube') { 
    bat '${scannerHome}/bin/sonar-scanner.bat'
}

, что я всегда получаю ошибку

'$ {scannerHome}' не распознается как внутренний или внешняя команда,

1 Ответ

1 голос
/ 02 марта 2020

Я вижу две проблемы:

  1. Вы не добавили никакой инсталлятор в инструмент SonarQubeScanner (отмечен только флажок)
  2. неправильный код

Одинарные кавычки не оцениваются (обрабатываются как есть). Это означает, что:

def value = 'ABC'
println '${value}/bin/sonar-scanner.bat'

печатает ${value}/bin/sonar-scanner.bat. Вы должны использовать двойные кавычки:

def value = 'ABC'
println "${value}/bin/sonar-scanner.bat"

печать ABC/bin/sonar-scanner.bat.

Код должен быть равен:

withSonarQubeEnv('SonarQube') { 
    bat "${scannerHome}/bin/sonar-scanner.bat"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...