2017-04-26 2 views
1

Je voudrais exécuter SonarQube Scanner à partir d'un pipeline Jenkins et j'ai suivi la documentation.Le scanner SonarQube échoue dans un pipeline Jenkins en raison d'une commande non trouvée

En ce qui concerne l'erreur, il semble que le scanner est présent mais certaines commandes ne sont pas trouvées. Mon instance jenkins s'exécute dans un docker.

Version 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 

Répondre

2

Dans le script sonar-scanner, il y a ce bloc

if [ -n "$JAVA_HOME" ] 
then 
    java_cmd="$JAVA_HOME/bin/java" 
else 
    java_cmd="$(which java)" 
fi 

Et étant donné que mon JAVA_HOME était hors service, le script appelé which et la commande est installé à l'intérieur de mon conteneur.

Pour résoudre ce problème, définissez la variable d'environnement JAVA_HOME.

+0

Ceci est plus précis que ma réponse. +1 – VonC

0

Assurez-vous que le chemin est terminé, ou vérifier si la réinitialisation il suffit

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=..." 
} 

je la configuration à partir de "Execute SonarQube Scanner within Jenkins 2 Pipeline", mais avec Sonar 2.5, there is an official support of Jenkins pipeline:

def scannerHome = tool 'SonarQube Scanner 2.8'; 
withEnv(["PATH=/usr/bin: ..."]) { 
    withSonarQubeEnv('My SonarQube Server') { 
    sh "${scannerHome}/bin/sonar-scanner" 
    } 
}