स्वचालन बनाम तैनाती स्वचालन बनाम निरंतर एकीकरण का निर्माण करें


12

मैं अधिक कुशल बनना चाहता हूं और मैं ऑप्स टूल का कुशलता से उपयोग करना चाहता हूं।

इसे ध्यान में रखते हुए, मैं निरंतर एकीकरण के बारे में अधिक जानना चाहता था, लेकिन ऐसा लगता है कि इसके बारे में कई अलग-अलग चीजें हैं।

मैं वास्तव में मेरे काम (इंटेलीज, वेबस्टॉर्म ...) में जेटब्रेन्स सूट के साथ काम कर रहा हूं, इसलिए मैं उनका उपयोग जारी रखना चाहता था, और मैं टीमसिटी का उपयोग करना चाहता था जो निरंतर एकीकरण के लिए कई प्लगइन्स के साथ एक महान उपकरण प्रतीत होता था।

मेरी समस्या यह है कि मुझे नहीं पता कि इनमें क्या अंतर हैं:

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

  • स्वचालन को तैनात करना (TeamCity यह आसानी से नहीं लगता है)

  • निरंतर एकीकरण (जो ऊपर दो का एक संयोजन लगता है)
  • निरंतर वितरण (यह वास्तव में क्या है? यह निरंतर एकीकरण से अलग क्यों है?)

क्या आप मुझे इसे थोड़ा और समझने में मदद कर सकते हैं?


यह ऑटोमेशन है, ऑटोमेशन नहीं।
फ्लोरियन मार्गाइन

यह मेरी मशीन पर काफी अच्छा नहीं है क्योंकि यह हर बार सही काम करने के लिए रेव्स पर निर्भर करता है। नई निर्भरता या टीम के अन्य सदस्य परिवर्तन जैसी चीजें आपके साथ संयुक्त होने से अब एक परीक्षा टूट जाती है।
एंडी

जवाबों:


15

विकिपीडिया इनमें से अधिकांश शब्दों का बहुत अच्छा सारांश देता है। यहाँ मेरा उन पर ले रहा है:

  • बिल्ड ऑटोमेशन स्वचालित रूप से संकलक के बजाय सॉफ्टवेयर को कैसे बनाया जाता है, इसे स्वचालित कर रहा है। यह उपकरण जैसे कि मेक या चींटी के माध्यम से पूरा किया जाएगा ।

  • परिनियोजन स्वचालन आपके निर्मित सॉफ़्टवेयर को ले रहा है और परीक्षण या उत्पादन प्रणाली पर तैनात या स्थापित कर रहा है।

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

  • सतत वितरण सभी पिछली अवधारणाओं का एक संयोजन है जहां सॉफ्टवेयर बनाता है एक परीक्षण प्रणाली में भी तैनात किया जाता है, वैकल्पिक रूप से प्रदर्शन किए गए परीक्षणों और उत्पन्न रिपोर्ट के साथ।

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

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

अंत में हमारे पास तैनाती के चरण हैं। यहां विचार समय को बचाने और मैन्युअल रूप से सॉफ़्टवेयर को लागू करने से त्रुटि को कम करने का है। बिल्ड ऑटोमेशन की तरह, सॉफ्टवेयर तैनाती के लिए एक सौ तरीके हैं। जब मैं कल साइट पर आने वाले ग्राहकों के लिए एक कार्य प्रणाली की आवश्यकता होती है, तो मैं कई अवसरों पर मैन्युअल तैनाती की समस्याओं को ठीक करने के लिए कार्यालय में देर से रुका हूं। कई प्रणालियों को स्वचालित करना अधिक जोखिम का परिचय देता है: एक प्रणाली के बजाय संभवतः दुर्घटनाग्रस्त या अजीब त्रुटियां होती हैं, अब हमारे पास कई हैंसिस्टम जो गलत हो सकते हैं। हालाँकि, यह जोखिम किसी चेकलिस्ट पर एक कदम याद करने या गलत आदेश जारी करने और तैनाती को गड़बड़ाने की तुलना में बहुत कम है। यदि आप भाग्यशाली हैं, तो आप बस एक DB बैकअप को पुनर्स्थापित कर सकते हैं और शुरू कर सकते हैं, यदि आप अशुभ हैं तो एक त्रुटि सिस्टम के गलत तरीके से कार्य करने का कारण हो सकता है। क्या यह एक सॉफ्टवेयर दोष है? क्या तकनीशियन ने कॉन्फ़िगरेशन ठीक से सेट नहीं किया था? यह निदान करने में समय लगता है, ऐसा समय जो आपके पास नहीं हो सकता है और यदि प्रक्रिया को स्वचालित करने के लिए समय की आवश्यकता नहीं है।


तो, क्या हम स्वीकार कर सकते हैं कि TeamCity जैसे उपकरण, जो रिमोट VCS से कुछ बनाने की अनुमति देते हैं, उन्हें CI सर्वर माना जा सकता है? वीसीएस शाखाओं से विकासशील कोड को मर्ज करने और बिल्डिंग ऑटोमेशन टूल से अंतिम संस्करण बनाने की तरह?
mfrachet

1
मैं TeamCity से परिचित नहीं हूँ लेकिन यह एक CI सर्वर प्रतीत होता है । मेरा अधिकांश अनुभव जेनकिंस सीआई के साथ है , जिसमें स्वचालित तैनाती शामिल है।

अगर आप स्वचालित डिप्लॉय चाहते हैं तो @Skahrz में आपके पास बिल्डमास्टर (एक सीआई सर्वर) और ऑक्टोपस डिप्लॉय जैसे विकल्प हैं।
एंडी

आप कंटीन्यूअस इंटीग्रेशन के बजाय कंटिन्यूअस बिल्ड्स का वर्णन कर रहे हैं। उत्तरार्द्ध को यह भी जाँचने की आवश्यकता होती है कि चीजें वास्तव में एक साथ रखने पर काम करती हैं ..
Thorbjørn Ravn Andersen

@ ThorbjørnRavnAndersen आप सही हैं, धन्यवाद। मैंने सीआई के साथ परीक्षण का उल्लेख करने के लिए अपना जवाब अपडेट किया।

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

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

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

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

मैं अधिक जानकारी के लिए इस पुस्तक को पढ़ने की सलाह देता हूं:


-2

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

हम पूर्ण CI के लिए टीमसिटी और बांस का उपयोग करते हैं, डेटाबेस CI का और इंट्रीग्रेशन वातावरण में तैनात करते हैं। फिर हम पूर्ण रिलीज़ बिल्ड और स्वचालित रूप से db माइग्रेशन स्क्रिप्ट बनाने के लिए टीमसिटी का उपयोग करते हैं। इन्हें एसवीएन में टीम स्क्रिप्ट जॉब्स के जरिए जांचा जाता है। Deploys के लिए, आपने यह अनुमान लगाया, हम तैनाती कार्यों को पूरा करने के लिए टीम से बाहर जाने के लिए टीमसिटी का उपयोग करते हैं। यह तब से अच्छी तरह से काम करता है जब टीमसिटी एजेंट टीमसिटी सर्वर से बात करता है और एजेंट डीएमजेड स्थान में सर्वर में से किसी एक पर मौजूद हो सकता है जो कोड को फायरवॉल से परे ले जाने में मदद करता है, इत्यादि टीमकैस्टी या बांस आप सभी को पूरे परिदृश्य को संभालने की आवश्यकता होती है। ।


2
ऐसा लगता नहीं है कि बनाए गए बिंदुओं पर कुछ भी पर्याप्त नहीं है और पूर्व उत्तर में बताया गया है
gnat
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.