अभी हमारे जेनकिंस एजेंट हमारे प्रत्येक रेल प्रोजेक्ट के लिए एक docker-compose.yml उत्पन्न करते हैं और फिर docker-comp अप चलाते हैं। Docker-compose.yml में एक मुख्य "वेब" कंटेनर है जिसमें रेनेव और हमारे सभी अन्य रेल निर्भरताएं हैं। यह एक DB कंटेनर से जुड़ा होता है जिसमें परीक्षण Postgres DB होता है।
समस्या तब आती है जब हमें वास्तव में परीक्षणों को चलाने और निकास कोड उत्पन्न करने की आवश्यकता होती है। हमारे सीआई सर्वर केवल तभी तैनात होंगे जब परीक्षण स्क्रिप्ट 0 से बाहर निकलती है, लेकिन डॉकटर-कंपोज़ हमेशा 0 रिटर्न देता है, भले ही कंटेनर कमांड में से एक विफल हो।
दूसरा मुद्दा यह है कि DB कंटेनर अनिश्चित काल तक चलता है, इसके बाद भी जब वेब कंटेनर परीक्षण चला रहा होता है, तो docker-compose upकभी नहीं लौटता है।
क्या कोई तरीका है जिससे हम इस प्रक्रिया के लिए docker-compose का उपयोग कर सकते हैं? हमें कंटेनरों को चलाने में सक्षम होना चाहिए, लेकिन वेब कंटेनर के पूरा होने के बाद बाहर निकलें और इसे बाहर निकलें कोड वापस कर दें। अभी हम डीबी कंटेनर को स्पिन करने के लिए डॉकटर का उपयोग करके मैन्युअल रूप से अटके हुए हैं और वेब कंटेनर को --link विकल्प के साथ चलाते हैं।
docker-compose1.12.0 और इसके बाद के संस्करण का उपयोग कर रहे हैं, तो इसे करने का सही तरीका होना चाहिए । शायद यह आपका मामला भी है। एक उदाहरण हो सकता हैdocker-compose up --exit-code-from test-unit:। ध्यान दें कि यह मेरे लिए तब तक काम नहीं आया जब तक मैंनेset -eअपनी स्क्रिप्ट की शुरुआत में इसे नहीं जोड़ा ।