2017-05-09 85 views
1

試圖用一個碼頭工人劑的聲明管道...詹金斯 - 不能運行程序「泊塢窗」

pipeline 
{ 
    agent 
    { 
     docker 
     { 
      image 'rubygem/calabash-cucumber' 
     } 
    } 
... 

的構建工作找到了搬運工形象,但隨後跳過所有階段和一個Java異常退出:

[test_automation] Running shell script 
+ docker pull rubygem/calabash-cucumber 
Using default tag: latest 
latest: Pulling from rubygem/calabash-cucumber 
Digest: sha256:cc6a06017009f0a68b93db33c2ced09a224ce2b8754efadaed16c18190e56ee4 
Status: Image is up to date for rubygem/calabash-cucumber:latest 
[Pipeline] } 
[Pipeline] // stage 
[Pipeline] sh 
[test_automation] Running shell script 
+ docker inspect -f . rubygem/calabash-cucumber 
. 
[Pipeline] withDockerContainer 
[Pipeline] // withDockerContainer 
[Pipeline] } 
[Pipeline] // node 
[Pipeline] stage 
[Pipeline] { (Declarative: Post Actions) 
[Pipeline] echo 
All stages finished. 
[Pipeline] echo 
Cleaning up workspace ... 
[Pipeline] echo 
Build failed! 
[Pipeline] } 
[Pipeline] // stage 
[Pipeline] End of Pipeline 
java.io.IOException: Cannot run program "docker": error=2, No such file or directory 
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048) 
    at hudson.Proc$LocalProc.<init>(Proc.java:245) 
    at hudson.Proc$LocalProc.<init>(Proc.java:214) 
    at hudson.Launcher$LocalLauncher.launch(Launcher.java:850) 
    at hudson.Launcher$ProcStarter.start(Launcher.java:384) 

任何人都知道爲什麼會發生這種情況?我在詹金斯常規設置中添加了所有我的bash PATH變量,並將jenkins用戶添加到工作人員組中。沒有幫助。

+0

回答的其他搬運工的命令,即「泊塢窗拉」和「泊塢窗檢查」是由事物的長相OK運行的,因此我不認爲這是環境變量或權限的問題。也許與實際的腳本本身的問題? –

+0

@RamanSailopal如果我使用'代理任何'腳本運行良好,但。 – BadmintonCat

+0

嘗試添加失敗的docker命令的完整路徑並查看Jenkins是否執行了它 –

回答

1

爲zshell(或其他文件)添加〜/ .zshenv以將docker放入路徑中。我這樣做和問題解決:

$ cat ~/.zshenv 
export PATH=/usr/local/bin:$PATH 

我在https://stackoverflow.com/a/44197275/2557645

+0

謝謝@Macdao。這真是血腥。在嘗試解決方案之前,我檢查了: ①我將docker路徑配置爲節點屬性中的環境變量。 ②打印調試信息'sh「docker」'和'sh「echo $ PATH」'總是有效的。 不知道爲什麼我需要zshenv。最好不要在我認爲的任何Jenkins節點上安裝zsh。 –