सबसे पहले चीजें, नीचे के ग्रे क्षेत्र पर माउस को घुमाएं। जवाब का हिस्सा नहीं है, लेकिन बिल्कुल कहा जाना है:
यदि आपके पास एक शेल स्क्रिप्ट है जो सभी के द्वारा "चेकआउट, निर्माण, तैनाती" करता है, तो आप जेनकिंस का उपयोग क्यों कर रहे हैं? आप जेनकिंस की सभी विशेषताओं को आगे बढ़ा रहे हैं जो इसे बनाते हैं। आपके पास एक क्रोन या एसवीएन पोस्ट-कम हुक हो सकता है जो स्क्रिप्ट को सीधे कॉल करता है। एसवीएन चेकआउट का प्रदर्शन करने वाली जेनकिंस अपने आप में महत्वपूर्ण है। यह बिल्डरों को केवल तभी ट्रिगर करने की अनुमति देता है जब परिवर्तन होते हैं (या टाइमर पर, या मैनुअल, यदि आप चाहें तो)। यह बनाता है के बीच परिवर्तन का ट्रैक रखता है। यह उन परिवर्तनों को दर्शाता है, इसलिए आप देख सकते हैं कि कौन सा निर्माण परिवर्तन के किस सेट के लिए था। यह तब शुरू होता है जब उनके परिवर्तन सफल या असफल निर्माण का कारण बनते हैं (फिर से, जैसा कि आप चाहें) कॉन्फ़िगर किया गया है। यह कमिटर्स को ईमेल करेगा जब उनके फिक्स ने फेलिंग बिल्ड को ठीक किया। और तो और। जेनकींस ने कलाकृतियों को संग्रहित करते हुए, उन्हें सीधे जेनकिंस से सीधे प्रति बिल्ड पर उपलब्ध कराया। एसवीएन चेकआउट जितना महत्वपूर्ण नहीं है, यह एक बार फिर से जेनकींस का एक अभिन्न हिस्सा है। तैनाती के साथ ही। जब तक आपके पास एक एकल वातावरण नहीं है, तब तक तैनाती आमतौर पर कई वातावरणों में होती है। जेनकिन्स किस माहौल का एक विशिष्ट निर्माण (एसवीएन परिवर्तन के विशिष्ट सेट के साथ) रख सकते हैं, प्रचार के उपयोग के माध्यम से इसे तैनात किया जाता है। आप इस सब को आगे बढ़ा रहे हैं। ऐसा लगता है जैसे आपको बताया गया है कि "आपको जेनकिंस का उपयोग करना है" लेकिन आप वास्तव में नहीं चाहते हैं, और आप यह कर रहे हैं कि आप अपने मालिकों को अपनी पीठ से हटा दें, बस एक चेकमार्क "हाँ, मैंने जेनकिंस का उपयोग किया है"
संक्षिप्त उत्तर है: जेनकिन के एक्सक्यूट शेल बिल्ड स्टेप के अंतिम कमांड का एक्जिट कोड वही है जो बिल्ड स्टेप की सफलता / विफलता को निर्धारित करता है । - सफलता, - विफलता। ध्यान दें, यह बिल्ड स्टेप की सफलता / असफलता का निर्धारण कर रहा है , न कि पूरी नौकरी चलाने का । पूरी तरह से काम चलाने की सफलता / विफलता कई बिल्ड चरणों और पोस्ट-बिल्ड कार्यों और प्लगइन्स से प्रभावित हो सकती है।0
anything else
आपने उल्लेख किया है Build step 'Execute shell' marked build as failure
, इसलिए हम केवल एक निर्माण कदम पर ध्यान केंद्रित करेंगे। यदि आपके Execute शेल बिल्ड स्टेप में केवल एक ही लाइन है जो आपके शेल स्क्रिप्ट को कॉल करती है, तो आपकी शेल स्क्रिप्ट का एक्जिट कोड बिल्ड स्टेप की सफलता / विफलता को निर्धारित करेगा। यदि आपकी शेल स्क्रिप्ट निष्पादन के बाद , आपके पास अधिक लाइनें हैं, तो उन्हें सावधानीपूर्वक समीक्षा करें, क्योंकि वे ऐसे हैं जो विफलता का कारण बन सकते हैं।
अंत में, यहाँ पढ़ें जेनकींस बिल्ड स्क्रिप्ट गूगल टेस्ट निष्पादन के बाद बाहर निकलता है । यह सीधे आपके प्रश्न से संबंधित नहीं है, लेकिन ध्यान दें कि जेनकिन्स ने शेल स्क्रिप्ट के रूप में Execute Shell build step को लॉन्च करने के बारे में बताया/bin/sh -xe
इसका -e
मतलब है कि शेल स्क्रिप्ट विफलता के साथ बाहर निकल जाएगी , भले ही सिर्फ 1 कमांड विफल हो, भले ही आप उस कमांड के लिए त्रुटि जांच करें (क्योंकि स्क्रिप्ट आपकी त्रुटि जांच से पहले निकल जाती है)। यह शेल स्क्रिप्ट के सामान्य निष्पादन के विपरीत है, जो आमतौर पर असफल कमांड के लिए त्रुटि संदेश को प्रिंट करता है (या इसे अन्य तरीकों से इसे शून्य करने और संभालने के लिए पुनर्निर्देशित करता है), और जारी रखें।
इसे दरकिनार करने के लिए, set +e
अपने शेल स्क्रिप्ट के शीर्ष पर जोड़ें ।
चूँकि आप कहते हैं कि आपकी स्क्रिप्ट वह सब करती है जो वह करने वाला है, संभावना है कि स्क्रिप्ट के अंत में फेलिंग कमांड कहीं है। शायद एक अंतिम गूंज? या कहीं कलाकृतियों की कॉपी? पूर्ण कंसोल आउटपुट को देखे बिना, हम केवल अनुमान लगा रहे हैं।
कृपया जॉब रन के कंसोल आउटपुट को पोस्ट करें, और अधिमानतः शेल स्क्रिप्ट को भी। और फिर हम आपको बता सकते हैं कि कौन सी लाइन विफल हो रही है।