2012-11-26 34 views
13

हमारे पास कई जावा प्रोजेक्ट हैं, जो जेनकिंस के साथ निर्मित सीआई हैं। ये हमारे अपने नेक्सस सर्वर पर ठीक से तैनात हैं। समस्या यह है कि हमें इन पुस्तकालयों को किसी तृतीय पक्ष को प्रदान करने की आवश्यकता है, लेकिन स्रोत कोड के बिना। तो प्रत्येक परियोजना के लिए, नेक्सस में हमने: हमारे devs के लिएविभिन्न सेटिंग्स के साथ कई भंडारों में मेवेन आर्टिफैक्ट को तैनात करना

  • विज्ञप्ति भंडार
  • स्नैपशॉट्स खजाने हमारे devs के लिए (तैनात शामिल स्रोत कोड)
  • (स्रोत कोड तैनात शामिल है) थर्ड पार्टी रिलीज रिपोजिटरी (केवल जेएआर + पीओएम)
  • (और यह अच्छा होगा): थर्ड पार्टी स्नैपशॉट रिपोजिटरी (केवल जार + पीओएम) तीसरे पक्ष के लिए रात बनाता है

सवाल यह है कि यह आमतौर पर जेनकींस/नेक्सस दुनिया में कैसे संभाला जाता है? मैं जेनकींस में एक ही नौकरी करना पसंद करूंगा जो सीआई बिल्ड और रिलीज (आर्टेफैक्ट परिनियोजन) प्रक्रिया को स्वचालित रूप से "संभालता है"। वर्तमान में मैं हमारे "मुख्य जड़ pom.xml" (सभी परियोजनाओं से शामिल है) में एक से अधिक <distributionManagement> प्रोफाइल उपयोग कर रहा हूँ:

[...] 
<profiles> 
    <profile> 
     <id>default</id> 
     <distributionManagement> 
      <repository> 
       <id>releases</id> 
       <name>Release</name> 
       <url>http://path/to/nexus/content/repositories/releases/</url> 
      </repository> 
      <snapshotRepository> 
       <id>snapshots</id> 
       <name>Snapshot</name> 
       <url>http://path/to/nexus/content/repositories/snapshots/</url> 
       <uniqueVersion>false</uniqueVersion> 
      </snapshotRepository> 
     </distributionManagement> 
    </profile> 
    <profile> 
     <id>third-party</id> 
     <distributionManagement> 
      <repository> 
       <id>releases</id> 
       <name>Release</name> 
       <url>http://path/to/nexus/content/repositories/third-party/</url> 
      </repository> 
      <snapshotRepository> 
       <id>snapshots</id> 
       <name>Snapshot</name> 
       <url>http://path/to/nexus/content/repositories/third-party-snapshots/</url> 
       <uniqueVersion>false</uniqueVersion> 
      </snapshotRepository> 
     </distributionManagement> 
    </profile> 
</profiles> 

Maven डॉक्स से, यह एक ही के दौरान कई खजाने का उपयोग करने का कोई रास्ता नहीं हो रहा है लाइफसाइकिल बनाएं, इस तथ्य का जिक्र न करें कि हमें लक्षित रेपो के आधार पर स्रोत की आवश्यकता नहीं है।

मैवेन में "नौकरी और विकल्प" के साथ जेनकिंस में नौकरी बनाने के साथ मैं एक चाल कर सकता हूं: clean deploy -P third-party और उसके बाद पोस्ट-बिल्ड एक्शन - "डिफ़ॉल्ट" डेटा के साथ "मेवेन रिपोजिटरी में कलाकृतियों को तैनात करना" जोड़ना - लेकिन इस मामले में, केवल 0Nके माध्यम से जारी किए गए रेपो और कलाकृतियों दोनों ही स्नैपशॉट केवल एक संग्रह में जा रहे हैं।

कोई व्यावहारिक विचार मैं अपने सीआई नौकरी पदानुक्रम को कम किए बिना ऐसा कैसे कर सकता हूं?

अग्रिम धन्यवाद!

+0

संभव डुप्लिकेट http://stackoverflow.com/questions/635154/multiple-deployments- इन-मेवेन) –

+0

हाँ, मैंने इसकी जांच की। दरअसल, नीचे दी गई वैगन प्लगइन में 'मर्ज-मेवेन-रेपोस' के साथ समान कार्यक्षमता हो सकती है, जो कि अन्य पोस्ट के लिए उपयोग योग्य हो सकती है। एक कस्टम प्लगइन को लागू करने के लिए हमें सबसे बुरा मामला है, मैं बस सोच रहा था कि जेनकिंस की मदद से इसे करने का "आम तरीका" है। – Siaynoq

उत्तर

3

आप इसे नेक्सस में ही संभाल सकते हैं। एक रिपोजिटरी लक्ष्य बनाएं जिसमें पहले से कॉन्फ़िगर किए गए उदाहरण "ऑल लेकिन स्रोत (मेवेन 2)" में इस्तेमाल किए गए पैटर्न की तरह एक पैटर्न शामिल है और यह संकीर्ण है कि समूहबद्ध, आर्टिफैक्टिड और यहां तक ​​कि संस्करण को प्रतिबंधित करने वाले किसी अन्य पैटर्न के साथ आगे भी लक्षित करें।

फिर उस विशेषाधिकार का निर्माण करें जो उस भंडार लक्ष्य का उपयोग करता है और उसे उस उपयोगकर्ता या भूमिका को असाइन करता है जिसे आप संबंधित पहुंच प्राप्त करना चाहते हैं।

कई तैनाती या कुछ इस तरह ..

ऐसा करने के लिए कोई ज़रूरत नहीं देखें http://books.sonatype.com/nexus-book/reference/repository-targets.html

[Maven में एकाधिक तैनाती] (की
+0

धन्यवाद! रेपो-लक्ष्य/विशेषाधिकार/भूमिका/उपयोगकर्ता पदानुक्रम को समझने के बाद यह विशिष्ट उपयोगकर्ताओं को स्रोत जार तक पहुंचने से प्रतिबंधित करने के लिए नेक्सस की स्थापना केक का एक टुकड़ा था। मुझे "व्यू" (-> निर्देशिकाओं को देखने में सक्षम) और "पढ़ने" (-> फ़ाइलों को डाउनलोड करने में सक्षम) के अंतर के बारे में कुछ भ्रम था, लेकिन अन्यथा यह वास्तव में आसान था। – Siaynoq

+0

लिंक टूटा हुआ है। – Cleankod

+0

लिंक @ क्लेनकोड फिक्स्ड –

0

आप Maven Wagon Plugin का उपयोग कर सकते हैं और तैनाती चरण पर एक दूरस्थ स्थान पर एक एकल जार अपलोड कर सकते हैं।

+0

विचार के लिए धन्यवाद। यह वास्तव में उपयोगी दिखता है, लेकिन मुझे कोई कामकाजी उदाहरण नहीं मिला जो मूल रूप से फाइलों का एक सबसेट ("इस मामले में मुख्य जार और पोम.एक्सएमएल) में" प्रतिकृति "(या अपलोड) को अन्य रेपो (और पदानुक्रम में एक ही स्थान पर))। कोई संकेत? – Siaynoq