Сканер 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"
  }
}
Другие вопросы по тегам