Сканер SonarQube не работает в конвейере Jenkins из-за не найденной команды
Я хотел бы запустить сканер SonarQube из конвейера Jenkins, и я следовал документации.
Что касается ошибки, кажется, что сканер присутствует, но некоторые команды не найдены. Мой экземпляр Дженкинса работает в докере.
Дженкинс версия: 2.46.1
SonarQube Scanner: 2.6.1
+ /var/lib/jenkins/tools/hudson.plugins.sonar.SonarRunnerInstallation/SonarQube_Scanner/bin/sonar-scanner
/var/lib/jenkins/tools/hudson.plugins.sonar.SonarRunnerInstallation/SonarQube_Scanner/bin/sonar-scanner: line 56: which: command not found
/var/lib/jenkins/tools/hudson.plugins.sonar.SonarRunnerInstallation/SonarQube_Scanner/bin/sonar-scanner: line 66: exec: : not found
2 ответа
Решение
В sonar-scanner
скрипт, есть этот блок
if [ -n "$JAVA_HOME" ]
then
java_cmd="$JAVA_HOME/bin/java"
else
java_cmd="$(which java)"
fi
И учитывая, что мой JAVA_HOME
был отключен, скрипт называется which
и команда не установлена внутри моего контейнера.
В качестве обходного пути я установил переменную env JAVA_HOME
,
Убедитесь, что путь PATH завершен, или проверьте, достаточно ли сброса
def sonarqubeScannerHome = tool name: 'SonarQubeScanner', type: 'hudson.plugins.sonar.SonarRunnerInstallation'
withEnv(["PATH=/usr/bin: ..."]) {
// Your call to Sonar
sh "${sonarqubeScannerHome}/bin/sonar-scanner -e -Dsonar.host.url=..."
}
Я использовал настройку из " Выполнить сканер SonarQube в трубопроводе Jenkins 2", но с Sonar 2.5 есть официальная поддержка конвейера Jenkins:
def scannerHome = tool 'SonarQube Scanner 2.8';
withEnv(["PATH=/usr/bin: ..."]) {
withSonarQubeEnv('My SonarQube Server') {
sh "${scannerHome}/bin/sonar-scanner"
}
}