सतत एकीकरण और DVCS के लिए पैटर्न


12

वर्तमान में हम सबवर्सन और टीमसिटी का उपयोग करते हैं, हम मर्क्यूरियल का उपयोग करने जा रहे हैं (विशेष रूप से किन्नर जैसे कि हम फॉगबुग यूजर्स हैं)।

जाहिर है इससे बदलाव होंगे - आशातीत सुधार - हमारे विकास प्रतिमानों में (हम सभी में से दो!) लेकिन एक मुद्दा जिसका मैं सामना कर रहा हूँ वह यह है कि चीजों को कैसे ढाँचा जाए ताकि हम अभी भी निरंतर एकीकरण / हमारे CI सर्वर का लाभ उठा सकें ( वहाँ लाभ हैं और रहेंगे लाभ एक दिया गया है, जिसकी चर्चा इस प्रश्न के दायरे से बाहर है )।

एसवीएन के साथ हम सीमित संख्या में केंद्रीय रिपॉजिटरी के लिए प्रतिबद्ध हैं - प्रभावी रूप से एक प्रति प्रोजेक्ट (अधिक या कम एक विजुअल स्टूडियो सॉल्यूशन) ताकि इसकी बिल्ड बनाने में आसानी हो और यह आश्वासन मिले कि सभी फाइलें कमिट की गई हैं और ऐसा नहीं है आदि पर निर्भरता आदि, लेकिन अगर हम उचित अधिकार लेने जा रहे हैं, तो हम अधिक रिपॉजिटरी उदाहरण चाहते हैं - जहां मैं आम तौर पर एक निश्चित "लाइव" रेपो की ओर बदलाव की उम्मीद करूंगा। मैं जिस समस्या से जूझ रहा हूं, वह यह है कि मेरे रे को मेरे सीआई को ट्रिगर करने के लिए लाइव रेपो बहुत "लेट" लग रहा है, ओटीओएच को एक सीआई प्रति प्रोजेक्ट प्रति डेवलपर बनाता है शायद बहुत अधिक (और अन्य मुद्दों का कारण बनता है)।

मैं थोड़ा मछली पकड़ रहा हूं, लेकिन ऐसा इसलिए है क्योंकि एक केंद्रीय तोड़फोड़ रेपो एक (मुझे, हमारे सेट के साथ) देता है, जब निर्माण करना है, तो इसके बारे में बहुत स्पष्टता है।


nb मैं निरंतर एकीकरण के साथ मर्क्यूरियल का उपयोग करने के यांत्रिकी के बारे में नहीं पूछ रहा हूं - मेरे पास एक निजी परियोजना, इसके पैटर्न और संरचनाओं और वर्किंग प्रैक्टिस / वर्कफ़्लो के लिए एक उपचार कार्य करना है जो मैं अपना सिर गोल करने की कोशिश कर रहा हूं।


आपको क्या लगता है कि केंद्रीय / "लाइव" रेपो से बिल्डरों को ट्रिगर करने में बहुत देर हो चुकी है?
c_maker 17

यदि आप पहले से ही वहां नहीं हैं, तो मैं आपको किल स्टैक एक्सचेंज साइट ( kiln.stackexchange.com ) पर जाने का सुझाव देता हूं । उनके पास यह सेट करने के तरीके के बारे में काफी सामग्री है (यहां एक: kiln.stackexchange.com/questions/29/… । व्यक्तिगत रूप से, हम प्रति सुविधा एक शाखा का उपयोग करते हैं, और हमारे "मास्टर" शाखा में बिल्ड सर्वर को इंगित करते हैं। )
क्रिस फिलिप्स

@ क्रिस - मेरे पास है, वास्तव में सीआई मुद्दे को संबोधित नहीं कर रहा है ...
मर्फ़

जवाबों:


2

सबसे पहले, TeamCity में प्रति प्रोजेक्ट में कई बिल्ड होते हैं जो वास्तव में जाने का तरीका है। प्लेटफ़ॉर्म की प्रकृति वास्तव में आसान बनाती है - कॉपी बटन एक कारण से है।

किसी भी स्थिति में, जब हम एसवीएन पर थे, हम आम तौर पर प्रत्येक प्रोजेक्ट के लिए 2 बिल्ड बनाते थे - एक मुख्य विकास लाइन (हमारे मामले में ट्रंक) पर और एक हमारी रिलीज़ शाखा में बताया गया था। हमने इस बिल्ड सेटअप को HG के ऊपर रखा, जबकि यह एक के समान ब्रंचिंग मॉडल का अनुसरण करता है । केवल वास्तविक चुनौती बिल्ड नंबरों के बारे में एक नई दुर्गंध वाले विद्वान की तलाश में है जो अब हम वर्तमान एसवीएन संशोधन संख्या का उपयोग नहीं कर सकते हैं।

हम लोगों को अपेक्षाकृत अधिक बार धकेलने की कोशिश करते हैं और प्रोत्साहित करते हैं, खासकर जब एक ही बार में बहुत काम हो रहा हो और हम तेजी से प्रतिक्रिया चक्र चाहते थे। सिर्फ इसलिए कि यह एक DCVS है इसका मतलब यह नहीं है कि आपको केवल एक दिन या एक बार धक्का देना है।


व्याट, मेरे दिमाग में धक्का तब लगना चाहिए जब आपके पास काम (ईश) की एक पूरी यूनिट हो - डीवीसीएस का एक लाभ यह है कि हम प्रतिबद्ध हो सकते हैं, स्थानीय रूप से, कोड जो टूट गया है। मैं वास्तव में एक शेड्यूल पर कुछ भी करने की धारणा को नापसंद करता हूं क्योंकि इसका दिन समाप्त होता है। "बैकअप" का एक अलग मुद्दा है, वह - मेरे लिए - बग़ल में पुश करने के लिए एक नियम स्थापित करने के बारे में है - प्रतिबद्ध - एक और क्लोन के लिए जो बस बैकअप होने के लिए मौजूद है।
मर्फ़

2
चाल वहाँ काम की इकाई की परिभाषा क्या है? क्या यह "यह सुविधा पूर्ण है" या क्या यह "यह ईंट सफलतापूर्वक रखी गई है"। हम उत्तरार्द्ध की ओर बढ़ते हैं, विशेष रूप से उस शाखा मॉडल के साथ जहां स्पष्ट रूप से विलम्बित विकास शाखा है। ब्रेकिंग सामान को फीचर शाखाओं के लिए सबसे अच्छा छोड़ दिया जाता है। यदि संभव हो तो उन लोगों के लंबे समय से चल रहे CI बिल्ड भी प्राप्त कर सकते हैं। खासकर अगर रसोई में कई रसोइए हैं।
व्याट बार्नेट

मैं "काम की इकाई" की आपकी परिभाषा से सहमत हूं, यही वजह है कि मैं अपने समग्र मॉडल के साथ थोड़ा संघर्ष कर रहा हूं (जिसमें पहले से ही "CI" बिल्ड और "परिनियोजन" बिल्ड) दोनों को समायोजित करने के लिए प्रति प्रोजेक्ट कई बिल्ड हैं। आप सही कह रहे हैं, इसका उत्तर बहुत सारे बिल्ड वायर को है, इसलिए अंत में मेरा असली मुद्दा चेक पर हस्ताक्षर करने वाला है! संदर्भित मॉडल ब्रांचिंग के बारे में सही दिखता है - भी। फिर भी समग्र पैटर्न पर विचार (और अनुमति देते हैं कि कि आगे kilnhg की बारीकियों के लिए अनुमति देने के लिए एडजस्ट किया जाएगा)
Murph

2

हम अब लगभग एक साल से भट्ठा का उपयोग कर रहे हैं और कई अलग-अलग चीजों की कोशिश कर रहे हैं। जहां हमने समाप्त किया है, निम्नलिखित शाखाओ की रणनीति के साथ नामित शाखाओं (शाखा क्लोन के विपरीत) का उपयोग किया जाता है:

  • डिफ़ॉल्ट ट्रैक "पूर्ण" विकास
  • सुविधा शाखाएँ ट्रैक का काम करती हैं जो वर्तमान में चल रहा है
  • रिलीज़ शाखाएँ ट्रैक पॉइंट्स जहाँ हम डिफ़ॉल्ट रूप से रिलीज़ होते हैं

इसलिए, डिफ़ॉल्ट के वर्तमान सिरे से एक सुविधा शाखा बनाकर काम शुरू होता है । जब सुविधा शाखा * की जाती है, तो शाखा बंद हो जाती है और डिफ़ॉल्ट रूप से वापस मर्ज हो जाती है

कुछ बिंदु पर, हम तय करते हैं कि हम जारी करने के लिए तैयार हैं, इसलिए हम डिफ़ॉल्ट रूप से वर्तमान टिप से एक नई रिलीज़ शाखा बनाते हैं । यह हमें उस कोड में बदलाव करने की अनुमति देता है जो वर्तमान में रिलीज़ शाखा के लिए प्रतिबद्ध होकर उत्पादन में है, जबकि सुविधा शाखाओं और डिफ़ॉल्ट पर सक्रिय विकास की अनुमति देता है ।

निरंतर एकीकरण के लिए, हम दो काम करते हैं:

  • एक "हमेशा ऑन" एकीकरण जो डिफ़ॉल्ट की स्थिति पर नज़र रखता है
  • प्रत्येक रिलीज शाखा के लिए नई एकीकरण

डिफ़ॉल्ट - शाखा काम हमें पता है कि हमारे मुख्य स्रोत पेड़ हमेशा स्थिर है की सुविधा देता है रिहाई शाखा नौकरियों हमें पता है कि उन शाखाओं स्थिर हैं और निर्माण उत्पादन हम उत्पादन में एक रिलीज पुश करने के लिए की जरूरत के साथ हमें प्रदान करते हैं।

* "किया" की हमारी परिभाषा यह है कि सुविधा डिफ़ॉल्ट से मर्ज के साथ अप-टू-डेट है और कोड समीक्षा में अनुमोदित किया गया है।


1

यदि आप एक DVCS में जाते हैं, तो Hg की तरह, आप न केवल "वितरित भाग" प्राप्त कर रहे हैं, आपको अच्छी ब्रांचिंग और विलय की पूरी शक्ति भी मिल रही है।

यह देखते हुए कि अब आपके पास एक अच्छा मुद्दा ट्रैकर और एक अच्छा SCM होगा ... प्रत्येक कार्य के लिए एक शाखा क्यों नहीं बनाई जाए?

"कार्य प्रति शाखा" पैटर्न नया नहीं है (बर्कज़ुक की पुस्तक की जाँच करें) लेकिन यह निश्चित रूप से कोशिश करने के लिए कुछ है।

मैंने इसे यहां विस्तार से समझाया , और सीआई बनाम "नियंत्रित" के पेशेवरों और विपक्षों को यहां बताया


मैं "बेहतर" के बजाय "बेहतर" कहूंगा क्योंकि मैंने खुशी, उत्साह और सफलतापूर्वक दोनों सुविधा और रखरखाव शाखा और तोड़फोड़ के साथ विलय कर दिया है (-:
मर्फ़
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.