2017-02-08 171 views
0

我在詹金斯以下管道腳本:nohup的:無法運行命令`sh`:沒有這樣的文件或目錄

node { 

    withMaven(globalMavenSettingsFilePath: '/my/path/apache-maven-3.2.2/conf/settings.xml', jdk: 'JDK 1.8.0u92', maven: 'apache-maven-3.2.2', mavenSettingsFilePath: '/my/path/apache-maven-3.2.2/conf/settings.xml') { 

    sh '/my/path/apache-maven-3.2.2/bin/mvn clean install' 
    } 
} 

對於這一點,我得到:

nohup: failed to run command `sh`: No such file or directory 
ERROR: script returned exit code -2 

爲什麼這個?

我確定我的Maven安裝路徑是正確的。當我在沒有管道的情況下運行作業時,Maven的構建沒有錯誤,我可以看到它使用相同的路徑。

回答

1

我會建議使用這樣的:

withMaven(
      maven: 'M3', 
      mavenSettingsConfig: 'maven-settings-for-the-task', 
      mavenLocalRepo: '.repository') { 

     // Run the maven build 
     sh "mvn clean install" 
    } 

除此之外,我不會使用絕對路徑,對全球的settings.xml也不是用戶的settings.xml。我更喜歡使用「配置文件提供程序插件」的用法,它具有在主服務器上具有settings.xml並可在所有節點上使用的優勢。

又見文檔:https://wiki.jenkins-ci.org/display/JENKINS/Pipeline+Maven+Plugin

+0

一件事是,如果我把'行家:「M3'',那麼它會說:'錯誤:無法找到‘M3’行家installation.' – octavian

+1

您需要在適當的Jenkins工具配置中定義Maven。 – khmarbaise

+0

我已經在'configureTools'中設置了Maven。我選擇了「自動安裝」和「版本:3.2.2」。你不覺得詹金斯應該看到這個版本的Maven嗎? – octavian

1

最後,我用shell代替sh和它的工作。不知道爲什麼,他們沒有適當的API。

1

這可能是修改PATH的結果。

檢查您的腳本和全局屬性,並刪除對PATH的修改。現在推薦使用PATH+extra代替。它仍然會被拾起,但不會破壞實際的PATH

對詹金斯相關的問題:https://issues.jenkins-ci.org/browse/JENKINS-41339

相關問題