2014-07-17 14 views
5

मैं जेनकींस एक जेनकींस दास पर डोकर भीतर निम्न आदेश को चलाने के लिए प्राप्त करने के लिए कोशिश कर रहा हूँ खत्म करने के लिए डोकर आदेश के लिए इंतज़ार कर रहा है:जेनकींस

docker run -i -v `pwd`:/opt/myapp -w /opt/myapp -t mydockerimage /bin/bash -c "./setup_dev_env.sh && make all" 

मुसीबत यह है कि जब मैं जेनकींस के भीतर से इस चलाने डोकर प्रक्रिया पैदा की है, लेकिन जेनकींस इसके लिए इंतजार नहीं करता है और तुरंत सफलता देता है। यदि, हालांकि, मैं डॉकर कमांड को एक अनंत लूप जेनकींस के साथ प्रतिस्थापित करता हूं, जैसा कि अपेक्षित है।

जब मैं सीधे निर्माण दास से इस आदेश को चलाने के लिए, जेनकींस उपयोगकर्ता के रूप में, प्रणाली समाप्त करने के लिए आदेश के लिए इंतजार कर रहा है (जो मैं क्या चाहते हो)।

मैं एक docker attach कर की कोशिश की है, लेकिन वह भी तुरंत वापस आती है। docker wait जेनकींस इसके लिए प्रतीक्षा करने के लिए कारण होगा, लेकिन मैं उत्पादन में से किसी को नहीं देखेंगे।

शायद मैं यह सब गलत के बारे में जा रहा हूँ ...

  1. मैं इस आदेश को समाप्त करने के लिए के लिए जेनकींस प्रतीक्षा करने के लिए कैसे मिल सकता है?
  2. मैं कैसे जेनकींस डोकर कंटेनर में चल आदेश के उत्पादन में प्रदर्शित करने के लिए प्राप्त कर सकते हैं?
  3. डॉकर में चलाने वाले कमांड का निकास कोड कैसे सेट किया जा सकता है ताकि जेनकिंस निर्धारित कर सकें कि यह सफल हुआ या विफल रहा?

उत्तर

8

यह समस्या है कि समस्या कमांड लाइन में -t थी। -t को हटाने से जेनकिन्स ने डॉकर के लिए इंतजार करने का इंतजार किया जो यह कर रहा था।

मेरे पास यह मामला था क्योंकि टीटीआई कभी-कभी अजीब हो सकती है और जेनकिंस संभवतः एक अलग प्रकार की टीटी (या बिल्कुल नहीं) का उपयोग कर रहा है जब मैं शेल प्रॉम्प्ट पर एक ही कमांड चला रहा हूं।

अंत में, इस आदेश का काम किया:

docker run -i -v `pwd`:/opt/myapp -w /opt/myapp mydockerimage /bin/bash -c "./setup_dev_env.sh && make all" 
+0

मैं किसी भी जवाब है कि बताते हैं कि ऐसा क्यों होता स्वीकार करने के लिए खुश हूँ या अगर वहाँ इस संभाल करने के लिए एक बेहतर तरीका है। –

+2

टी एक छद्म tty आवंटित करेगा, इस जेनकींस tty के साथ अलग है। तो जेनकिंस तुरंत सफलता वापस कर देंगे। बस इतना ही – xds2000