2011-08-05 18 views
30

के साथ इंफ्रास्ट्रक्चर हम मेवेन का उपयोग कर रहे हैं। मैं आधारभूत संरचना स्थापित करना चाहता हूं, ताकि स्वचालित रूप से निर्मित कलाकृतियों नेक्सस भंडार में जा सके। और फिर वे डेवलपर्स द्वारा इस्तेमाल किया जा सकता है।मैवेन, जेनकींस, नेक्सस

मैंने पहले से ही हमारी परियोजना के लिए 1 जॉब के साथ जेनकींस स्थापित कर लिया है। और मैंने उसी सर्वर पर नेक्सस सेट अप किया।

डेवलपर्स के पीसी पर मैंने सी: \ उपयोगकर्ता {उपयोगकर्ता} .m2 \ settings.xml पर डिफ़ॉल्ट मैवेन सेटिंग की प्रतिलिपि बनाई है। संदर्भ:

Configuring Maven to Use a Single Nexus

Maven Settings Reference

<mirror> 
    <!--This sends everything else to /public --> 
    <id>nexus</id> 
    <mirrorOf>*</mirrorOf> 
    <url>http://myserver:8081/nexus/content/groups/public</url> 
</mirror> 

(मैं सिर्फ Repository Management with Nexus पुस्तक का पालन करें)

मेरे लिए अगले कदम होना चाहिए क्या हैं? जेनकिंस नौकरी के पास mvn install होना चाहिए? कंपनी कलाकृतियों के लिए नेक्सस भंडार कैसे बनाएं?

उत्तर

16

नेक्सस में कलाकृतियों को तैनात करने के लिए, आपको अपने पोम में distributionManagement section शामिल करना होगा। स्नैपशॉट्स और रिलीज दोनों के लिए पहले से ही विशिष्ट भंडारों के साथ नेक्सस जहाजों की स्थापना की गई है। आपको उनमें से प्रत्येक को सही रास्ता देना चाहिए ताकि मैवेन स्नैपशॉट को तैनात कर सके और सही रिपोज़ को कलाकृतियों को रिलीज़ कर सके। फिर जब भी आप कलाकृतियों को तैनात करते हैं - आमतौर पर mvn deploy के साथ या maven release plugin का उपयोग करके, कलाकृतियों को तैनात किया जाएगा। नेक्सस ने डिफ़ॉल्ट रूप से प्रमाणीकरण लिखा है, इसलिए आपको server section को किसी भी व्यक्ति के सेटिंग्स.एक्सएमएल के सही प्रमाण-पत्रों के साथ जोड़ना होगा जो कलाकृतियों को तैनात करेंगे। जेनकींस का इलाज किसी अन्य उपयोगकर्ता की तरह किया जा सकता है। यदि आपके पास इसके निर्माण के रूप में deploy है, तो प्रत्येक बिल्ड नेक्सस पर तैनात किया जाएगा। यदि आप जेनकिंस नौकरी में बाद में ऐसा करना चाहते हैं तो कलाकृतियों को तैनात करने के लिए एक पोस्ट-बिल्ड एक्शन भी है।

+0

यह काम करते हैं के लिए के साथ प्रमाणीकरण

-Dusername=<> -Dpassword=<> 

उपयोग करते हैं, यह अपनी परियोजना अपने विरूपण साक्ष्य भंडार का स्थान पता करने के लिए बाध्य करती है। [इस उत्तर] पर एक नज़र डालें (http://stackoverflow.com/a/11952832/235179) जेनकिन्स को विशेष रूप से आर्टिफैक्ट परिनियोजन को संभालने के लिए। –

12

अद्यतन Maven ~/.m2/settings.xml जोड़ने के लिए pom.xml

<distributionManagement> 
    ... 
    <repository> 
     <id>deploymentRepo</id> 
     <name>Internal Releases</name> 
     <url>http://nexusserver:8081/nexus/content/repositories/releases</url> 
    </repository> 
    ... 
    </distributionManagement> 

तो

<server> 
    <id>deploymentRepo</id> 
    <username>deployment</username> 
    <password>deployment123</password> 
</server> 

तो mvn deploy

तो यह किसी भी में तैनात विरूपण साक्ष्य उपयोग करना संभव है (इस नेक्सस में डिफ़ॉल्ट तैनाती उपयोगकर्ता है) परियोजना, जैसे मानक कलाकृतियों के रूप में। इस मामले में pom.xml करने

<!-- company repositories --> 
    <repository> 
     <id>deploymentRepoReleases</id> 
     <name>Releases (Nexus)</name> 
     <url>http://nexusserver:8081/nexus/content/repositories/releases/</url> 
    </repository> 
    <repository> 
     <id>deploymentRepoSnapshots</id> 
     <name>Snapshots (Nexus)</name> 
     <url>http://nexusserver:8081/nexus/content/repositories/snapshots/</url> 
    </repository> 

अद्यतन जोड़ें: बाद में हम स्नैपशॉट खजाने से दूर चला गया और maven-release-plugin कि केवल रिहाई प्रकार के खजाने की जरूरत का उपयोग कर रहे थे।

16

मुझे अपनी परियोजनाओं pom.xml में कोई भी परिवर्तन करने की आवश्यकता नहीं थी। इसके बजाए, जेनकिंस "पोस्ट-बिल्ड एक्शन" में मैंने "मैवेन रिपोजिटरी में कलाकृतियों को तैनात" चुना है और फिर "उन्नत" चुना है और रिपोजिटरी यूआरएल को http://nexusserver:8081/nexus/content/repositories/releases पर सेट किया है और रिपोजिटरी आईडी deploymentRepo पर सेट किया है।

जेनकींस मशीन पर ~/.m2/settings.xml में मैं जोड़ा

<settings> 
    <servers> 
    <server> 
     <id>deploymentRepo</id> 
     <username>deployment</username> 
     <password>deployment123</password> 
    </server> 
    </servers> 
    ... 

</settings> 
+0

रिलीज रिपॉजिटरीज़ के लिए नेक्सस डिफ़ॉल्ट सेटिंग केवल 1 संस्करण को तैनात करने की अनुमति देना है। क्या आपके पास रिलीज के लिए केवल दूसरा काम है (यानी नेक्सस पर तैनाती)? –

+1

@PaulVerest आप शैल निष्पादित करने के लिए एक पूर्व चरण जोड़ सकते हैं और 'mvn संस्करण चला सकते हैं: set -DnewVersion = 1। $ {BUILD_NUMBER} संस्करण: प्रतिबद्ध करें, निर्माण संख्या के बाद संस्करण का नामकरण करें। फिर जब यह पोस्ट-बिल्ड एक्शन होता है तो वह इसे उस संस्करण के रूप में तैनात करेगा। –

+0

@ जोश जोहानसन स्टीव ब्राउन द्वारा इसका उत्तर दिया गया था। व्यक्तिगत रूप से मैं मैवेन-रिलीज-प्लगइन का उपयोग करने की सिफारिश करता हूं और संस्करण-मेवेन-प्लगइन (संस्करण: सेट) –

1

यह एक जेनकींस सवाल एक Maven प्रश्न के बजाय है, तो मैं इनबिल्ट जेनकींस "Maven भंडार करने के लिए कलाकृतियों तैनात" का उपयोग की सलाह देते हैं पोस्ट कार्रवाई का निर्माण ज्यादातर मामलों के लिए।

मेरी राय में लाभ:

  • अधिक पोर्टेबल (हम जीवन चक्र के विभिन्न चरणों के लिए अलग खजाने का उपयोग करें), और प्रत्येक जेनकींस उदाहरण जेनकींस काम पढ़ने किसी को उसके अपने भंडार
  • अधिक स्पष्ट जानता है
  • कर बातें
1

Maven रिलीज-प्लगइन के लिए Maven लक्ष्य तर्क के बाद की जेनकींस रास्ता के साथ लाइन में अधिक nexu पारित करने के लिए इस्तेमाल किया जा सकता रों भंडार जेनकींस परियोजना, Maven कमांड लाइन, गठजोड़ रेपो प्रमाणीकरण