2017-05-07 144 views
16

我們有一個Jenkinsfile,它使用docker插件在給定容器內運行腳本。這適用於某些圖像,但是會立即失敗並在其他人身上出現-1退出代碼。我們已將錯誤降低到簡單的sleep。這是Jenkinsfile:Jenkins Docker管道退出代碼-1

node("docker") { 
    def wheezy_image = docker.image("pyca/cryptography-runner-wheezy") 
    wheezy_image.pull() 
    wheezy_image.inside { 
     sh """sleep 120""" 
    } 
} 

而這裏的詹金斯輸出

+ docker pull pyca/cryptography-runner-wheezy 
Using default tag: latest 
latest: Pulling from pyca/cryptography-runner-wheezy 
Digest: sha256:ff5d9f661b05d831ace3811eec9f034fed7994279ff2307695a2cb7c32d6fa11 
Status: Image is up to date for pyca/cryptography-runner-wheezy:latest 
[Pipeline] sh 
[3525-VE2ETALXLYB7VN3] Running shell script 
+ docker inspect -f . pyca/cryptography-runner-wheezy 
. 
[Pipeline] withDockerContainer 
$ docker run -t -d -u 1000:1000 -w /var/jenkins_home/workspace/3525-VE2ETALXLYB7VN3 --volumes-from 1382a2e208dd5575acd26f11678855282fc854319096de60cef6818ea279f25f -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** --entrypoint cat pyca/cryptography-runner-wheezy 
[Pipeline] { 
[Pipeline] sh 
[3525-VE2ETALXLYB7VN3] Running shell script 
+ sleep 120 
[Pipeline] } 
$ docker stop --time=1 887db8989e03a10dd89132b1ac6e18261ee4a49e6afe8b0c5568326b6c023654 
$ docker rm -f 887db8989e03a10dd89132b1ac6e18261ee4a49e6afe8b0c5568326b6c023654 
[Pipeline] // withDockerContainer 
[Pipeline] } 
[Pipeline] // node 
[Pipeline] End of Pipeline 

GitHub has been notified of this commit’s build result 

ERROR: script returned exit code -1 
Finished: FAILURE 

有趣的是,如果睡眠少於1秒,隨後這個傳遞(但120秒睡眠作品就好很多的其他圖像)。

作爲參考,這裏是一個jessie image的作品,和一個wheezy image不。

有人知道這裏可能會發生什麼嗎?

+0

我假設一個香草wheezy碼頭圖像(沒有pyca/cryptography-runner-wheezy添加的東西)不顯示相同的問題? docker hub上沒有Dockerfile(https://forums.docker.com/t/how-to-upload-my-dockerfile-to-docker-hub/6563/2),所以我很懶惰看着這個。 :) – burnettk

+0

@burnettk我不知道我們是否用光屁股測試過; 'Dockerfile'可以在以下網址找到:https://github.com/pyca/infra/blob/master/runners/wheezy/Dockerfile –

+1

@burnettk我剛剛測試過拉'debian:wheezy',看到同樣的問題。 –

回答

10

看起來和你沒有安裝ps的圖片有關。我剛剛拿到了Debian基地,並且能夠複製它不起作用。安裝了ps,它確實有效。你也可以使用withRun函數,它可以工作。這是我的Jenkinsfile:

node("docker") { 

    // Weezy that also ran... apt-get update && apt-get install -y procps 
    def wheezy_image = docker.image("smalone/weezy-ps-test") 
    wheezy_image.pull() 
    wheezy_image.inside { 
     sh 'sleep 2' 
    } 

     // Base image for weezy-ps-test that has no ps installed using withRun() instead of inside() 
    wheezy_image = docker.image("debian:wheezy") 
    wheezy_image.pull() 
    wheezy_image.withRun { c -> 
     sh 'sleep 2' 
    } 

    // Base image for weezy-ps-test that has no ps installed 
    wheezy_image = docker.image("debian:wheezy") 
    wheezy_image.pull() 
    wheezy_image.inside { 
     sh 'sleep 2' 
    } 
} 

我會在docker管道插件上打開一張票(如果不存在)。

編輯:有一張票打開,但他們還沒有找到根本原因呢。請參閱:https://issues.jenkins-ci.org/browse/JENKINS-40101以跟蹤此問題的狀態!

+0

這就是它!非常感謝。我期待看到上游的修復,但現在我們可以通過添加procps(和Fedora上的procps-ng)來解決它。一旦堆棧溢出讓我(我們需要一個24小時的時間段之後,獎勵加入之前,你可以獎勵它) –