2017-05-07 14 views
16

हमारे पास जेनकिन्सफाइल है जो किसी दिए गए कंटेनर के अंदर एक स्क्रिप्ट चलाने के लिए डॉकर प्लगइन का उपयोग करता है। यह कुछ छवियों के लिए ठीक काम करता है, लेकिन दूसरों पर एक -1 निकास कोड के साथ तुरंत विफल रहता है। हमने त्रुटि को एक साधारण sleep पर घटा दिया है। यहाँजेनकींस डॉकर पाइपलाइन निकास कोड -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 दूसरे नींद के कई पर बस ठीक काम करता है: यह Jenkinsfile है अन्य छवियां)।

संदर्भ के लिए, यहां एक jessie image है जो काम करता है, और wheezy image ऐसा नहीं करता है।

क्या किसी को पता है कि यहां क्या हो रहा है?

+0

मुझे लगता है कि एक वेनिला wheezy डॉकर छवि (बिना सामान के pyca/क्रिप्टोग्राफी-धावक-wheezy जोड़ता है) एक ही मुद्दा प्रदर्शित नहीं करता है? डॉकर हब पर आपकी छवि के लिए डॉकरफ़ाइल नहीं है (https://forums.docker.com/t/how-to-upload-my-dockerfile-to-docker-hub/6563/2), इसलिए मैं आलसी महसूस कर रहा हूँ इसे देख रहे हैं। :) – burnettk

+0

@burnettk मुझे नहीं पता कि हमने एक नंगे wheezy के साथ परीक्षण किया है; 'डॉकरफ़ाइल' यहां पाया जा सकता है: https://github.com/pyca/infra/blob/master/runners/wheezy/Dockerfile –

+1

@burnettk मैंने अभी सिर्फ 'डेबियन: wheezy' खींचने और एक ही समस्या को देखने का परीक्षण किया। –

उत्तर

10

ps स्थापित नहीं होने पर आपकी छवि से संबंधित होने लगते हैं। मैंने अभी डेबियन बेस लिया और दोहराने में सक्षम था कि यह काम नहीं करेगा। स्थापित ps, और यह काम किया। आप withRun फ़ंक्शन का भी उपयोग कर सकते हैं और यह काम करता है। यहां मेरी जेनकिन्सफाइल है:

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' 
    } 
} 

यदि कोई अस्तित्व में नहीं है, तो मैं डॉकर पाइपलाइन प्लगइन पर टिकट खोलूंगा।

संपादित करें: एक टिकट खुला था, लेकिन उन्हें अभी तक मूल कारण नहीं मिला था। देखें: https://issues.jenkins-ci.org/browse/JENKINS-40101 इस समस्या की स्थिति को ट्रैक करने के लिए!

+0

यह बिल्कुल है! बहुत बहुत धन्यवाद। मैं फिक्स अपस्ट्रीम को देखने के लिए तत्पर हूं, लेकिन अभी के लिए हम procps (और फेडोरा पर procps-ng) जोड़कर इसके आसपास काम कर सकते हैं। जैसे ही स्टैक ओवरफ्लो मुझे देता है, मैं बकाया राशि दूंगा (इसे पुरस्कार देने से पहले 24 घंटे की अवधि की आवश्यकता होती है) –

संबंधित मुद्दे