आप किस सतत एकीकरण ढांचे का उपयोग करते हैं और क्यों? [बन्द है]


21

वहाँ कुछ अलग कंटीन्यूअस इंटीग्रेशन (CI) फ्रेमवर्क हैं, जो मैं सोच रहा हूँ और जो सबसे लोकप्रिय है। जिन फर्मों में आप काम करते हैं, वहां आपने कौन से फ्रेमवर्क का उपयोग किया है?

क्या कोई कारण है कि एक सीआई फ्रेमवर्क दूसरे की तुलना में अधिक लोकप्रिय है - शायद यह उन सुविधाओं के साथ करना है जो इसे प्रदान करता है, चीजें जो इसे एकीकृत करती हैं या शायद इसका सिर्फ विपणन है?

ऐसा लगता है कि रूबी या पाइथन की तुलना में जावा और .net दुनिया में निरंतर एकीकरण का अधिक उपयोग किया जाता है। ऐसा क्यों है?


सीआई और रूबी और पायथन के साथ ऐसा प्रासंगिक नहीं होने का एक कारण यह है कि भाषाओं की व्याख्या की जाती है, इसलिए कुछ भी संकलित करने की आवश्यकता नहीं है। लेकिन यह केवल मेरी निजी राय है ...
10

1
@mliebelt --CI केवल संकलित जाँच से अधिक तक फैलता है। आप इकाई / एकीकरण परीक्षण (अन्य आश्रित परियोजनाओं के साथ भी) चला सकते हैं।
अपूर्व खुरसिया

जवाबों:


31

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

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


मैं इसके साथ एक अच्छा UI जोड़ने जा रहा हूँ।
मार्टिज़न वेरबर्ग

हां, मैं यूआई को सरल के तहत उपयोग करने के लिए संक्षेप में लिखूंगा।
मुनीम

5
CruiseControl जाने के लिए एक दर्द था ... हडसन को उठना और भागना इतना आसान था। चक नॉरिस ( wiki.hudson-ci.org/display/HUDSON/ChuckNorris+Plugin ) प्लगइन एक आवश्यक है।
सैम डोलन

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

यह प्रोग्रामर अभी भी विंडोज पर काम करने के लिए हडसन को कॉन्फ़िगर नहीं कर सकता है :(
Mchl

16

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

कॉन्फ़िगरेशन के लिए XML के ढेर के साथ काम नहीं करना मेरी किताबों में एक बड़ा प्लस है और मुफ्त संस्करण मेरे घर की जरूरतों के लिए पर्याप्त है।

एक समस्या जिसे मैंने TeamCity के साथ चलाया था, उसे .NET .NET असेंबली में स्वचालित रूप से प्राप्त करने की कोशिश के साथ करना है। मुझे अपेक्षाकृत जटिल वर्कअराउंड सेट करना पड़ा, लेकिन एक बार जब यह जगह में था, तो यह एक आकर्षण की तरह काम करता था।


Im घर पर टीसी की कोशिश कर रहा है। हम cruisecontrol.net के साथ समस्याओं के अलावा कुछ भी नहीं है।
कोई नहीं

8

व्यक्तिगत रूप से, मैंने केवल कभी क्रूज़कंट्रोल और क्रूज़कॉन्ट्रोल.नेट का उपयोग किया है। इसका कारण अर्थशास्त्र से है। वे यथोचित रूप से स्थिर हैं और एक बार जब आप उन्हें सेट करते हैं, तो वास्तव में आपको इसे बनाए रखने के लिए बहुत कम ज़रूरत होती है। उपयोगकर्ता समुदाय आमतौर पर बहुत सहायक होता है, और इसे आपकी आवश्यकताओं के लिए बढ़ाया जा सकता है।

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

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

समस्याओं के तीन सामान्य वर्ग हैं जिन्हें CI उपकरण आपको पकड़ने में मदद कर सकते हैं:

  1. संकलित त्रुटियां - यदि एक वर्ग के हस्ताक्षर निर्भरता को तोड़ने वाले तरीके से बदलते हैं, तो किसी वितरण योग्य के आने वाले घंटों से पहले इसके बारे में जानना सबसे अच्छा है।
  2. तर्क त्रुटियां - यदि एक वर्ग का व्यवहार इस तरह से बदलता है जो निर्भरता को तोड़ता है, तो इसके बारे में जल्दी जानना सबसे अच्छा है। यह किसी प्रकार के स्वचालित परीक्षण द्वारा जांचा जाना है, सबसे अधिक इकाई परीक्षण।
  3. स्वीकृति परीक्षण - यदि आपके पास तैयार उत्पाद पर चलने के लिए परीक्षणों का एक स्वचालित सूट है, तो उन्हें अक्सर चलाना सबसे अच्छा है।

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

दोनों तर्क त्रुटियों और स्वीकृति परीक्षण बिंदुओं में मुख्य शब्द "स्वचालित" परीक्षण है। यदि आपके पास परीक्षणों का एक सूट नहीं है जो एक मशीन चला सकती है, तो आप वास्तव में CI टूल के अधिक लाभ को याद कर रहे हैं। स्वचालित सूट को समय के साथ बनाया जा सकता है, इसलिए आप छोटे से शुरू कर सकते हैं।

संपादित करें

बड़ी संख्या में CI टूल (जिनमें से कई के बारे में मुझे पता नहीं था) की तुलना करने के लिए यह अच्छा चार्ट देखें:

http://confluence.public.thoughtworks.org/display/CC/CI+Feature+Matrix


संकलित / व्याख्यात्मक भेद इतना काला और सफेद नहीं है। उदाहरण के लिए, पर्ल का एक संकलन चरण है जो स्टार्टअप पर चलता है (और किसी भी सिंटैक्स त्रुटियों के लिए जाँच करने के लिए "-c" विकल्प के साथ अलग से मंगवाया जा सकता है)।
एंड्रयू मेडिको

यह सच है। रूबी 1.9 और पायथन में भी संकलन चरण हैं। समस्या का संकलन त्रुटि वर्ग किसी भी भाषा पर लागू होता है जो आपको सूचित करेगा यदि संकलन के दौरान संदर्भ वर्ग / चर / विधि मौजूद नहीं है। यह निश्चित रूप से किसी भी वैधानिक रूप से टाइप की गई भाषा पर लागू होता है। वाईएमएमवी गतिशील लेकिन मजबूत टाइप की गई भाषाओं (जैसे रूबी और पायथन) पर।
बेरिन लोरिट्श

"एक बार जब आप उन्हें सेट करते हैं, तो वास्तव में आपको इसे बनाए रखने के लिए बहुत कम ज़रूरत होती है" - क्या यह सभी निरंतर एकीकरण सर्वरों का सच नहीं है?
ब्रायन ओकले

5

टीम फाउंडेशन सर्वर

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


'अन्य उत्पादों' से, आपका मतलब 'Microsoft उत्पादों' से है। मैं आपको आलोचना नहीं कर रहा हूं, लेकिन एमएस ने अपने तकनीकी स्टैक को संरचित किया है ताकि एमएस उत्पादों के साथ एकीकरण करने के लिए, आपको अन्य एमएस उत्पादों, या बहुत धैर्य और / या दृढ़ता की आवश्यकता हो।
GKelly

1
कोरी बकवास। उनके पास लगभग सब कुछ के लिए एपीआई और एसडीके हैं, यहां तक ​​कि किनेक्ट भी, लेकिन गैर-एमएस प्रोग्रामर को पता नहीं है, क्योंकि वे माइक्रोस सुनते ही अपने कानों को कवर करते हैं .. (टीएफएस एसडीके से लिंक) msdn.microsoft.com/ en-us / Library / bb130146 (v = VS.80) .aspx
ल्यूक पुप्लेट

2

मैं CruiseControl.NET और हडसन दोनों का उपयोग करता हूं । मेरे कुछ बिल्ड उनमें से एक पर हैं और कुछ दूसरे पर हैं।

क्यूं कर? क्योंकि मैं बिल्ड इंजीनियर नहीं हूं और वह जो बिल्ड इंजीनियर है, उसने उन्हें इस तरह सेट किया है!

जिस तरह से मेरे बिल्ड अप सेट किए गए हैं या उत्पाद के बारे में शिकायतें हैं, मुझे कोई समस्या नहीं है। मैं आपको बता रहा हूं कि चीजें किस तरह से यहां हैं, तथ्य-संबंधी और आशा है कि आप इस परिप्रेक्ष्य की सराहना करेंगे!

अद्यतन: जब से मैंने उत्तर पोस्ट किया है, हडसन को कांटा गया और जेनकिंस बन गया । उपरोक्त सिफारिश जेनकिंस पर लागू होती है।


1

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


1

हमारी टीम मुख्य रूप से पायथन, सी ++ और जावा में काम करती है। हम CI के लिए Buildbot का उपयोग करते हैं। हमने शुरुआत में इसके साथ शुरुआत की क्योंकि यह ट्राक के साथ एकीकृत है और क्योंकि यह सरल और सीधा लग रहा था। मेरा मानना ​​है कि यह पायथन दुनिया में पसंद का CI ढांचा है।


1

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

मैं शायद इसके बजाय पल्स का उपयोग करूंगा, लेकिन अगर आपको कई प्लेटफार्मों पर बनाने की आवश्यकता है तो यह> $ 5k है, जो थोड़ा अधिक है।


1

निरंतर एकीकरण के लिए CruiseControl.NET । बहुत अच्छी तरह से काम करता है, हालांकि क्रूज़कंट्रोल में हमने बहुत बड़ी संख्या में बिल्ड प्रोजेक्ट की स्थापना की है, लंबे समय तक ताज़ा अंतराल के साथ, सीसीटीआर डेस्कटॉप ट्रे ऐप बहुत ही गैर-उत्तरदायी है।

NAnt उन स्क्रिप्ट्स के लिए है जो क्रूज़कंट्रोल प्रोजेक्ट्स में निष्पादित होती हैं। अधिक जटिल बिल्ड स्क्रिप्ट के लिए, हमने कस्टम C # NAnt कार्यों के साथ NAnt बढ़ाया है, जो बहुत अच्छा है - C # में कोड लिखना NAnt स्क्रिप्ट बनाने की तुलना में बहुत अधिक सुखद है।

हम एक Microsoft की दुकान हैं और सैद्धांतिक रूप से Microsoft की टीम बिल्ड 2010 की ओर बढ़ रहे हैं, जब हम 2010 में अपने टीम फ़ाउंडेशन सर्वर वातावरण को माइग्रेट करेंगे।


0

ध्यान दें कि आपको अपने आवेदन को कमांड लाइन से बनाने में सक्षम होना चाहिए, भले ही आपके पास सीआई-इंजन चल रहा हो या नहीं।

इसका मतलब यह है कि सभी सीआई-इंजन आपके बिल्ड इनवोकेशन को व्यवस्थित कर रहा है, और आप उस इंजन को चुन सकते हैं जो आपकी विशेष जरूरतों को पूरा करता है।

PErsonally मैं हडसन को मुख्य रूप से पसंद करता हूं क्योंकि यह " अच्छा " लगता है , लेकिन मुझे पता है कि यदि सभी विफल होते हैं तो मैं बिना किसी प्रयास के दूसरे को स्विच कर सकता हूं। यदि ऐसा है, तो मैं शायद सबसे पहले एटलसियन द्वारा बनाई गई जांच करूंगा, क्योंकि मुझे उनके द्वारा बनाए गए अन्य कार्यक्रमों की "भावना" पसंद है ।

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


0

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

यह 7 पीएम पर क्रोन के माध्यम से चला और संलग्न आउटपुट फाइलों के एक समूह के साथ ईमेल भेजा। हमने परियोजना के पूरे 7 महीनों के लिए इसका उपयोग किया और अगले 20 महीनों के रखरखाव और सुधार के लिए इसका उपयोग किया गया।

इसने ठीक काम किया लेकिन फिर भी बैश स्क्रिप्ट, क्रॉन और चींटी के ऊपर हडसन को प्राथमिकता दी।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.