2009-08-04 8 views
33

मेरी टीम की विकास प्रक्रिया continuous integration पर आधारित है। जब हम रिलीज करते हैं तो केवल एक ही शाखाएं रखरखाव शाखाएं होती हैं, लेकिन अन्यथा डेवलपर्स को नियमित रूप से (दैनिक यदि अधिक नहीं होता) ट्रंक करने की अपेक्षा की जाती है, ताकि सभी का काम हमेशा एकीकृत, निरंतर परीक्षण किया जा सके और सभी अच्छी चीजें हों।क्या निरंतर एकीकरण का उपयोग करते हुए टीमों के लिए गिट अनुचित है?

DVCS की मेरी समझ यह है कि यह शाखाकरण के लिए बहुत अच्छा है। मैंने कुछ साल पहले एक टीम में काम किया था, जहां यह बहुत उपयोगी होता, क्योंकि प्रत्येक शाखा का विकास शाखा पर किया जाता था, और पूर्ण और परीक्षण होने पर ही विलय हो जाता था। लेकिन यह निरंतर एकीकरण से एक अलग दर्शन था।

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

मुझे यकीन है कि एक डीवीसीएस के अन्य लाभ हैं (उदाहरण के लिए यह बहुत तेज़ है क्योंकि यह स्थानीय है, संभावित रूप से मुख्य शाखा के साथ विलय हो रहा है जबकि डेवलपर काम पर चल रहा है)।

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

+0

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

उत्तर

32

असल में डीवीसीएस ने निरंतर एकीकरण को अधिक आसान बना दिया।

केंद्रीय वीसीएस के साथ, प्रत्येक डेवलपर को सीधे ट्रंक में प्रतिबद्ध करने का अधिकार है और इसलिए वह छोटी गाड़ी कोड कर सकता है। इस तथ्य के बाद सीआई इसका पता लगाएगा। तो सीआई के साथ भी ट्रंक तोड़ना संभव है।

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

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

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

पीक्यूएम-आधारित विलय वर्कफ़्लो के परिणामस्वरूप बीजीआर ट्रंक कभी टूटा नहीं जाता है (कम से कम जब तक पर्याप्त स्वीकृति और रिग्रेशन परीक्षण होते हैं)।

+0

धन्यवाद bialix, इस तरह की युक्तियाँ वही हैं जो मैं इस प्रश्न से प्राप्त करने की उम्मीद कर रहा था। – Kief

+0

मैंने आपके जवाब को दो अन्य लोगों के साथ वोट दिया जो अच्छी अंतर्दृष्टि प्रदान करते थे। मुझे नहीं लगता कि यहां तक ​​कि किसी भी उत्तर (अब तक) इस सवाल का जवाब है। – Kief

+0

@ डेमियन आपको बहुत धन्यवाद। – bialix

7

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

5

सतत एकीकरण उपकरण जैसे कि हडसन के पास डीवीसीएस के लिए समर्थन है, इसलिए मुझे संदेह है कि वितरित संस्करण नियंत्रण के साथ निरंतर एकीकरण को सुलझाना संभव है।

सबसे पहले, मुझे लगता है कि वर्कफ़्लो का उपयोग करते हुए डीवीसीएस के साथ विषय शाखा वर्कफ़्लो सीआई कम आवश्यक हो सकता है। दूसरा, आप (एकल, केंद्रीय) निरंतर एकीकरण भंडार स्थापित कर सकते हैं जिसमें आप तैयार होने पर धक्का देते हैं, और हुक सीआई करते हैं।


जोड़ा गया 2009/07/08:

उदाहरण के लिए देखें GitHub ब्लॉग पर Continuous Integration Spring Cleaning पोस्ट।

6

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

इस तरह से आप अन्य डेवलपर्स के निर्माण को तोड़ने के बिना, किसी सुविधा को कार्यान्वित करने के आधे रास्ते तक स्रोत नियंत्रण से लाभ प्राप्त करते हैं।

+0

मुझे लगता है कि निरंतर एकीकरण के लिए उपयोग किए जाने पर यह केंद्रीकृत वीसी पर डीवीसीएस के मुख्य लाभों में से एक है। यह काम करने के अधिक बारीक स्तर की अनुमति देता है, जो कि स्वयं परीक्षा उत्तीर्ण नहीं करता है, लेकिन वीसी द्वारा ट्रैक किया जा सकता है। इनमें से समूह एक पूर्ण परिवर्तन करते हैं जो एक साथ परीक्षण पास कर सकता है, और मुख्य रेपो को धक्का देकर एकीकृत किया जाता है। – imagineerThat

+0

लेकिन बात यह है कि आप अपने डेवलपर्स को वृद्धिशील विकास करने के लिए सिखााना चाहते हैं :) आंशिक कार्य के साथ जो मौजूदा परीक्षणों को पास नहीं करता है, आप अपनी टीम को लंबे समय तक शाखाएं दे रहे हैं और फिर अचानक आप विशेषता शाखा बना रहे हैं आप इसे अभी तक नहीं जानते हैं –

1

दो विचारों कि मैं मदद करने के लिए मिल गया है इस बताते हैं:

  • DVCS अलग मर्ज के से करता है।
  • सीआई आपके द्वारा चुने गए भंडार के खिलाफ चलता है।

तो इस मामले का दिल यह है कि विलय उन रिपॉजिटरीज़ में कैसे बनाया जाता है जिन्हें आप सीआई उपकरण चलाने के लिए चाहते हैं। जब आप शुरू करते हैं तो आप केवल एक भंडार चुन सकते हैं।

+0

जब तक आपका काम केंद्रीयकृत रेपो के साथ विलय की मात्रा को कम नहीं करता है, तब भी आप निरंतर एकीकरण कर रहे हैं। सीआई को एक रेपो के खिलाफ भागना चाहिए जो हर कोई सहमत होता है, अन्यथा यह केवल वितरित रिपो का एक गुच्छा है जो एकीकृत नहीं है। – imagineerThat

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