2017-04-26 303 views
1

我想從Jenkins管道運行SonarQube掃描儀,並且我遵循了文檔。SonarQube掃描儀由於找不到命令而在Jenkins管道中失敗

關於錯誤,似乎掃描儀存在,但沒有找到一些命令。我的jenkins實例運行在docker中。

詹金斯版本:2.46.1

SonarQube掃描: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

+0

這比我的答案更精確。 +1 – VonC

0

確保路徑是否完整,或者是否重置它足夠

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

我用從「Execute SonarQube Scanner within Jenkins 2 Pipeline」的設置,但與聲納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" 
    } 
} 
相關問題