2011-03-04 3 views
8

मैंने मेवेन को SNAPSHOT कलाकृतियों को तैनात करने के लिए 5 मॉड्यूल के साथ हमारे मेवेन मल्टी-प्रोजेक्ट के लिए एक हडसन नौकरी बनाई है भंडार। यह ठीक है, जब तक यह परीक्षण विफलताओं के बिना सफलतापूर्वक बनाता है। हालांकि, अब मैं निम्नलिखित आवश्यकताओं को पूरा करना चाहता हूं:परीक्षण विफलताओं के निर्माण के लिए एक हडसन मेवेन नौकरी को कॉन्फ़िगर करें, लेकिन अगर कोई परीक्षण विफलता नहीं है तो केवल तैनात करें

  • जब किसी मॉड्यूल में परीक्षण विफलता होती है, तो निर्माण को बुलडिंग जारी रखना चाहिए और अन्य मॉड्यूल का परीक्षण करना चाहिए, लेकिन पीले रंग की बारी करना चाहिए। -Dmaven.test.failure.ignore=true का उपयोग करके पूरा हो जाता है, लेकिन अगली आवश्यकता पर विफल रहता है।
  • जब किसी मॉड्यूल में परीक्षण विफलता होती है, तो किसी भी कलाकृतियों को मैवेन रिपोजिटरी में तैनात नहीं किया जाना चाहिए। अन्य परियोजनाएं इस परियोजना के स्नैपशॉट्स पर निर्भर करती हैं और वे प्रोजेक्ट केवल नवीनतम स्नैपशॉट्स का उपयोग करना चाहते हैं जिनमें कोई असफल परीक्षण नहीं है।
  • अधिमानतः, एक मुफ्त स्क्रिप्ट के बजाय हडसन मेवेन एकीकरण का उपयोग करें, हमें हडसन रिपोर्ट पेज (प्रति मॉड्यूल लाल/पीला/नीली स्थिति, लॉग त्रुटि रंग बनाने, ...) प्राप्त होता है। विशिष्ट रूप से मेवेन को दो बार निर्मित करना (mvn test -Dmaven.test.failure.ignore=true, mvn deploy -DskipTests से) समाधान नहीं है क्योंकि यह एक प्रदर्शन हानि है और यह हडसन रिपोर्ट पेजों को भ्रमित करता है और यह परमाणु नहीं है (यह दूसरे निर्माण में दोबारा रिपॉजिटरीज़ से अपडेट होता है)।

क्या इसे पूरा करने का कोई तरीका है?

उत्तर

5

नामक एक पोस्ट बिल्ड विकल्प है जिसे मैवेन रिपोजिटरी पर कलाकृतियों को तैनात किया गया है। यदि आप का चयन नहीं करते हैं, भले ही बिल्ड अस्थिर है, तो इसका मतलब है कि यदि परीक्षण विफल रहता है, तो यह कुछ भी तैनात नहीं करेगा। आदेश में -fae के साथ, चीज़ को आपके वांछित तरीके से काम करना चाहिए

+0

Pitfall: विकल्प * मैवेन रिपोजिटरी में कलाकृतियों को तैनात करना * एक फ्रीस्टाइल हडसन नौकरी में उपलब्ध नहीं है, केवल एक मैवेन 2 हडसन जॉब में (जो स्पष्ट रूप से अभी तक मैवेन के लिए काम नहीं करता है)। –

+0

अब तक एक maven2 हडसन/जेनकिंस बिल्ड maven3 का समर्थन करता है –

2

हो सकता है आप हडसन पर नौकरियों mvn -fae विकल्प का उपयोग आप के साथ की कोशिश कर सकते हैं - यह Maven पूर्ण निर्माण

+0

-fae विकल्प (अंत में विफल), मुझे लगता है कि तैनाती को रोक नहीं है। लेकिन यह -dmaven.test.failure.ignore = true से बेहतर विकल्प की तरह दिखता है, धन्यवाद! –

1

के बाद ही असफल करते हैं तो निर्माण समय आप के लिए एक समस्या नहीं है, मुझे लगता है कि बेहतर विकल्प है तैनाती के लिए, एक और नौकरी बनाने के लिए। कुछ इस तरह:

  1. के साथ अपने मूल काम (इसे "काम का निर्माण" कॉल) कॉन्फ़िगर करें ("नौकरी की तैनाती") "mvn स्थापित साफ -fae"
  2. एक नया काम बनाएं के साथ "mvn तैनात", और किसी भी बिल्ड इसके लिए
  3. से चलाता है "नौकरी का निर्माण", बिल्ड अन्य परियोजनाओं सक्षम विकल्प में कॉन्फ़िगर नहीं है, के तहत कार्रवाई के बाद का निर्माण और सेट इसे चलाने के लिए अपने "काम की तैनाती"।

शायद आप एक ही वर्कस्पेस का उपयोग करने के लिए दोनों नौकरियों को कॉन्फ़िगर करने का प्रयास कर सकते हैं, पूरे निर्माण/तैनाती प्रक्रिया पर कुछ समय बचा सकते हैं।

+1

मैवेन एकीकरण के बजाए एक मुफ्त स्क्रिप्ट का उपयोग करके यह एक ही नौकरी में किया जा सकता है, लेकिन * विशेष रूप से मेवेन को दो बार निर्माण करना (पहले एमवीएन टेस्ट -Dmaven.test.failure.ignore = true, mvn deploy -DskipTests की तुलना में) है समाधान नहीं है क्योंकि यह एक प्रदर्शन हानि है और यह हडसन रिपोर्ट पेजों को भ्रमित करता है और यह परमाणु नहीं है (यह फिर से दूसरे निर्माण में रिपॉजिटरीज़ से अपडेट होता है)। * –

1

यदि आप Artifactory को रिपोजिटरी मैनेजर के रूप में उपयोग करते हैं, तो आप अपनी कलाकृतियों को तैनात करने के लिए Hudson/Jenkins Artifactory plugin का उपयोग कर सकते हैं। यह प्लगइन केवल आपके कलाकृतियों को तैनात करेगा यदि सभी परीक्षण मैवेन बिल्ड के सभी मॉड्यूल के लिए पास होते हैं।

+0

दिलचस्प समाधान। हम हालांकि नेक्सस का उपयोग कर रहे हैं, लेकिन अगर मैं कुछ समान हूं तो मैं एक नज़र डालूंगा। –

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