2011-11-18 13 views
8

का उपयोग कर एकीकरण-प्रबंधक गिट वर्कफ़्लो ProGit में वर्णित किसी भी संशोधित एकीकरण-प्रबंधक वर्कफ़्लो को लागू करने का प्रयास कर रहा हूं।जेनकिन्स/हडसन

Diagram of the Integration-Manager workflow

इसके बजाय एक integration manager के मर्ज करते समय, मैं डेवलपर के लिए अपने कोड प्रकाशित करने से पहले स्थानीय स्तर पर मर्ज करना चाहते हैं, और मैं एक Quality Gateway कि इस तरह के कोड कवरेज और 100 का न्यूनतम स्तर के रूप में हमारे सतत एकीकरण मानकों को लागू करता है, चाहते हैं कोड को अन्य डेवलपर्स द्वारा चेक किए जाने वाले धन्य भंडार में प्रवेश करने से पहले, पास करने का परीक्षण किया जाता है। विचार यह है कि धन्य भंडार में कोड हमेशा न्यूनतम मानक को पूरा करता है जिसे हम परिभाषित करते हैं और हमेशा बनाते हैं।

मैं चाहता हूं कि जेनकिंस गुणवत्ता गेटवे की भूमिका निभाए, केवल सफल होने पर धन्य भंडार को कोड दबाए।

अब तक, मैंने सिस्टम स्थापित किया है ताकि निम्नलिखित सार्वजनिक प्रतिनिधि हों: धन्य भंडार, जेनकींस के लिए बिल्ड सर्वर पर एक भंडार, जो एक नंगे रेपो को गिटोसिस के माध्यम से उपयोग किया जाता है, और निश्चित रूप से डेवलपर के स्वयं के भंडार ।

मेरे पास डेवलपर्स धन्य रेपो से खींच रहे हैं और एकीकरण रेपो को दबा रहे हैं। अब मैं जेनकिन्स को एकीकरण रेपो से धन्य रेपो में सफल निर्माण को धक्का देने की कोशिश कर रहा हूं।

अभी तक, मैंने जो देखा है, वह एकमात्र विकल्प है जो मैं प्राप्त करने की कोशिश कर रहा हूं, जेनकिन्स प्रोजेक्ट कॉन्फ़िगरेशन में पोस्ट बिल्ड एक्शन के गिट प्रकाशक सेटिंग्स में "Push Only If Build Succeeds" विकल्प है। हालांकि, यह विकल्प आपको पुश यूआरएल या रिमोट को पुश करने के लिए निर्दिष्ट करने की अनुमति नहीं देता है।

जैसा कि मैं इसे समझता हूं, गिट प्रकाशक सेटिंग्स रेपो जेनकिन्स के क्लोन को अपने कार्यक्षेत्र में जेनकिन्स के सार्वजनिक रेपो में वापस धक्का देगी, लेकिन मैं एक अलग रिमोट, धन्य भंडार को धक्का देना चाहता हूं।

क्या किसी के पास कोई सुझाव है कि मैं जेनकिंस को धन्य रेपो को कैसे धक्का दे सकता हूं?

संपादित करें 0: मैं एक पोस्ट चरण मेरी धन्य भंडार करने के लिए धक्का आदेश पर अमल करने डालने की कोशिश की। यह काम करता प्रतीत होता है, इसमें कोई त्रुटि नहीं है। हालांकि कोई बदलाव नहीं धकेल दिया जा रहा है और लॉग Git सोचता है कि दिखाने के लिए सब कुछ अप टू डेट है:

[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESSFUL 
[INFO]  ------------------------------------------------------------------------ 
[INFO] Total time: 1 minute 7 seconds 
[INFO] Finished at: Fri Nov 18 16:10:50 UTC 2011 
[INFO] Final Memory: 19M/45M 
[INFO] ------------------------------------------------------------------------ 
channel stopped 
[My Project] $ /bin/sh -xe /tmp/hudson5604254372179801803.sh + git push [email protected]:my-project.git --all 
Everything up-to-date 

मैं क्यों Git सोचता पुश करने के लिए कुछ भी नहीं है, क्योंकि वहाँ निश्चित रूप से है पता नहीं है।

उत्तर

1

क्या आपने अपने वर्कफ़्लो में Gerrit जोड़ने पर विचार किया है। परिवर्तन गेरिट को धकेल दिए जाते हैं और फिर आपका सीआई आपके परीक्षणों पर एक बिल्ड और रिपोर्ट चलाता है। इसे स्थापित किया जा सकता है ताकि आपके अनुमोदित रेपो में विलय होने से पहले अन्य अनुमोदन (जैसे अधिकृत कोड समीक्षा) की आवश्यकता हो। EGit इसे अपने विकास, http://egit.eclipse.org/r/ में उपयोग करता है। इस वर्कफ़्लो के साथ-साथ alblue के ब्लॉग की अन्य चर्चाएं भी हैं।

+0

दिलचस्प लग रहा है, लेकिन केवल एक चीज यह जोड़ती है कि हमारी वर्तमान प्रक्रिया में औपचारिक समीक्षा प्रक्रिया नहीं है। हमारी परियोजनाओं को मंत्रमुग्ध कर दिया गया है, इसलिए यदि वे निर्माण पास करते हैं तो हम जानते हैं कि वे परीक्षण और अन्य आवश्यकताओं को पार करते हैं जिन्हें हमने परिभाषित किया है।ऐसा लगता है कि एक और उपकरण हमारे पर्यावरण को जटिल बनाने के लिए उचित साबित करने के लिए पर्याप्त नहीं है (हमारी प्रक्रिया में)। मैं ध्यान में रखूंगा क्योंकि हमारी ज़रूरतें बदलती हैं, धन्यवाद! – chrisbunney

+0

मैं जटिलता को सीमित करने की आवश्यकता को समझता हूं :-) मेरा मतलब है कि यह समीक्षा दोनों जोड़ता है और यह आपके आशीर्वाद रेपो के लिए प्रतिबद्ध होने से पहले प्रत्येक परिवर्तन पर सीआई/टेस्ट पास परिणामों की रिपोर्ट करता है। –

+0

हाँ, जब हम उस चरण तक पहुंच जाएंगे तो यह अच्छा होगा :) – chrisbunney

2

जब भी जेनकिंस सफल निर्माण के बाद धक्का देता है तो धन्य भंडार को धक्का देने के लिए, जेनकिन्स "पुश केवल अगर बिल्ड सक्सेड्स" कार्रवाई का उपयोग करने के लिए, एकीकरण-पोस्ट पर पोस्ट-प्रतिबद्ध या पोस्ट-प्राप्त हुक के साथ कैसे करें?

+0

यह – chrisbunney

+0

+1 धन्यवाद, यह ध्यान देने योग्य है कि यह केवल उस शाखा को धक्का देगा जो परिवर्तन को ट्रिगर करता है। यदि आपने 1 से अधिक शाखाओं में टैग या परिवर्तन को धक्का दिया है, तो वे धक्का नहीं देंगे (हम वर्तमान में प्रति प्रोजेक्ट 1 प्रोजेक्ट सेट करने के बजाय 1 प्रोजेक्ट प्रति रेपो का उपयोग कर रहे हैं, क्योंकि हम कई शाखाएं बनाते हैं जिन्हें हम चाहते हैं निरंतर एकीकरण के माध्यम से धक्का) – chrisbunney