CI/CD क्या है? सतत एकीकरण और सतत वितरण
सतत एकीकरण (सीआई) क्या है?
लगातार मेल जोल एक सॉफ्टवेयर विकास पद्धति है जहाँ टीम के सदस्य दिन में कम से कम एक बार अपने काम को एकीकृत करते हैं। इस पद्धति में, त्रुटियों का पता लगाने के लिए प्रत्येक एकीकरण को एक स्वचालित बिल्ड द्वारा जांचा जाता है। इस अवधारणा को पहली बार दो दशक पहले "एकीकरण नरक" से बचने के लिए पेश किया गया था, जो तब होता है जब एकीकरण को किसी परियोजना के अंत तक टाल दिया जाता है।
निरंतर एकीकरण में कोड कमिट के बाद, सॉफ्टवेयर का निर्माण और परीक्षण तुरंत किया जाता है। कई डेवलपर्स के साथ एक बड़ी परियोजना में, दिन के दौरान कई बार कमिट किए जाते हैं। प्रत्येक कमिट के साथ कोड बनाया और परीक्षण किया जाता है। यदि परीक्षण पास हो जाता है, तो निर्माण को परिनियोजन के लिए परीक्षण किया जाता है। यदि परिनियोजन सफल होता है, तो कोड को उत्पादन में धकेल दिया जाता है। यह कमिट, निर्माण, परीक्षण और परिनियोजन एक सतत प्रक्रिया है, और इसलिए इसका नाम निरंतर एकीकरण/परिनियोजन है।
सतत वितरण (सीडी) क्या है?
निरंतर वितरण एक सॉफ्टवेयर इंजीनियरिंग विधि है जिसमें एक टीम एक छोटे चक्र में सॉफ्टवेयर उत्पाद विकसित करती है। यह सुनिश्चित करता है कि सॉफ्टवेयर को किसी भी समय आसानी से जारी किया जा सकता है। निरंतर वितरण का मुख्य उद्देश्य अच्छी गति और आवृत्ति के साथ सॉफ्टवेयर का निर्माण, परीक्षण और रिलीज करना है। यह आपको उत्पादन में लगातार अपडेट की अनुमति देकर परिवर्तन वितरित करने की लागत, समय और जोखिम को कम करने में मदद करता है।
सीआई और सीडी में क्या अंतर है?
CI के बिना विकास बनाम CI के साथ विकास
CI का उपयोग करने वाले या CI के बिना विकास के बीच मुख्य अंतर इस प्रकार हैं:
सीआई के बिना विकास | सीआई के साथ विकास |
---|---|
बहुत सारे बग | कम बग |
अनियमित प्रतिबद्धताएं | नियमित प्रतिबद्धताएँ |
अनियमित और धीमी गति से रिलीज़ | नियमित कार्यशील रिलीज़ |
कठिन एकीकरण | आसान और प्रभावी एकीकरण |
परीक्षण देर से होता है | सतत एकीकरण परीक्षण शीघ्र और अक्सर होता है। |
उठाए गए मुद्दे को ठीक करना कठिन है | समस्याओं को तेजी से और अधिक कुशलता से खोजें और ठीक करें। |
परियोजना की खराब दृश्यता | बेहतर परियोजना दृश्यता |
संकलन और सतत एकीकरण के बीच अंतर

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

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

सीआई की विशेषताएं
सतत एकीकरण की महत्वपूर्ण विशेषताएं और लाभ इस प्रकार हैं:
- आपको केवल एक ही स्रोत रिपोजिटरी बनाए रखने की अनुमति देता है
- आप उत्पादन CI वातावरण के क्लोन का परीक्षण कर सकते हैं
- निर्मित वातावरण उत्पादन वातावरण के करीब होना चाहिए।
- निरंतर एकीकरण के लाभों में से एक वर्तमान बिल्ड की निरंतर उपलब्धता है
- निर्माण, परीक्षण और परिनियोजन की पूरी प्रक्रिया सभी स्टैक धारकों को दिखाई देनी चाहिए।
सीआई का उपयोग क्यों करें?
सतत एकीकरण का उपयोग करने के महत्वपूर्ण कारण यहां दिए गए हैं:
- आपको बेहतर गुणवत्ता वाला सॉफ्टवेयर बनाने में मदद करता है
- सीआई प्रक्रिया इंजीनियरिंग टीमों की संख्या और डिलीवरी आउटपुट को बढ़ाने में मदद करती है।
- CI सॉफ्टवेयर डेवलपर्स को समानांतर रूप से सुविधाओं पर स्वतंत्र रूप से काम करने की अनुमति देता है।
- आपको बार-बार परीक्षण करने में मदद करता है
- बेहतर संचार के लिए दृश्यता में वृद्धि
- पूर्णतः स्वचालित निर्माण के लिए संभावित रूप से शिप करने योग्य उत्पाद विकसित करने में सहायता करता है
- तैनाती को तेज़ और अधिक पूर्वानुमानित बनाकर जोखिम कम करने में आपकी सहायता करता है
- समस्या आने पर तत्काल प्रतिक्रिया
- रिलीज की तारीख और समय पर अंतिम क्षण में भ्रम से बचें
CI सिस्टम का उपयोग करने की सर्वोत्तम प्रथाएँ
यहां, कार्यान्वयन के दौरान कुछ महत्वपूर्ण सर्वोत्तम अभ्यास दिए गए हैं
- जल्दी और बार-बार प्रतिबद्ध रहें, कभी भी टूटे हुए कोड को प्रतिबद्ध न करें
- निर्माण विफलताओं को तुरंत ठीक करें
- मेट्रिक्स पर कार्य करें
- प्रत्येक लक्ष्य वातावरण में निर्माण करें प्रत्येक निर्माण से कलाकृतियाँ बनाएँ
- सॉफ्टवेयर का निर्माण इस प्रकार किया जाना चाहिए कि इसे स्वचालित किया जा सके।
- किसी IDE पर निर्भर न रहें
- जब भी कुछ बदले तो उसका निर्माण और परीक्षण करें
- डेटाबेस स्कीमा को सब कुछ माना जाता है
- आपको मुख्य मीट्रिक्स का पता लगाने और उन्हें विज़ुअली ट्रैक करने में मदद करता है
- अक्सर और जल्दी चेक-इन करें
- मजबूत स्रोत कोड नियंत्रण
- निरंतर एकीकरण में जब भी आप कोड लिखते हैं तो यूनिट परीक्षण चलाया जाता है
- निर्माण को स्वचालित करें और सभी का परीक्षण करें
- स्वचालित परिनियोजन के साथ निर्माण को तेज़ रखें
सीआई के नुकसान
सतत एकीकरण प्रक्रिया के नुकसान/कमियां इस प्रकार हैं:
- Cl सर्वर से परिचित होने के लिए प्रारंभिक सेटअप समय और प्रशिक्षण की आवश्यकता होती है
- उपयुक्त परीक्षण प्रक्रियाओं का विकास आवश्यक है
- अच्छी तरह से विकसित परीक्षण-सूट को Cl सर्वर के लिए कई संसाधनों की आवश्यकता थी
- परिचित प्रक्रियाओं का रूपांतरण
- अतिरिक्त सर्वर और वातावरण की आवश्यकता है
- प्रतीक्षा समय तब हो सकता है जब कई डेवलपर्स एक ही समय में अपने कोड को एकीकृत करना चाहते हैं
CI प्रक्रिया के लिए उपकरण
यहां कुछ सबसे आवश्यक CI/CD उपकरण दिए गए हैं:
जेनकींस
जेनकींस एक ओपन-सोर्स निरंतर एकीकरण सॉफ्टवेयर है। इसे का उपयोग करके लिखा गया है Java प्रोग्रामिंग भाषायह अधिक विशाल कोडबेस में अलग-अलग परिवर्तनों पर वास्तविक समय परीक्षण और रिपोर्टिंग की सुविधा प्रदान करता है। यह सॉफ़्टवेयर डेवलपर्स को उनके कोडबेस में दोषों को जल्दी से खोजने और हल करने और उनके बिल्ड के परीक्षण को स्वचालित करने में मदद करता है।
Bamboo
Bamboo यह एक निरंतर एकीकरण बिल्ड सर्वर है जो एक ही स्थान पर स्वचालित बिल्ड, परीक्षण और रिलीज़ करता है। यह JIRA सॉफ़्टवेयर और Bitbucket के साथ सहजता से काम करता है। Bamboo कई भाषाओं और तकनीकों का समर्थन करता है जैसे कि CodeDeply, Docker, Git, SVN, Mercurial, AWS, और Amazon S3 बाल्टी.
TeamCity
TeamCity एक सतत एकीकरण सर्वर है जो कई शक्तिशाली सुविधाओं का समर्थन करता है। यह CI सर्वर को स्वस्थ और स्थिर बनाए रखता है, भले ही कोई बिल्ड न चल रहा हो। यह किसी भी प्रोजेक्ट के लिए बेहतर कोड गुणवत्ता प्रदान करता है
सारांश
- सतत एकीकरण परिभाषा: सतत एकीकरण एक सॉफ्टवेयर विकास पद्धति है जहां टीम के सदस्य दिन में कम से कम एक बार अपने काम को एकीकृत कर सकते हैं
- सीआई/सीडी का अर्थ है सतत एकीकरण और सतत वितरण या सतत परिनियोजन का संयोजन।
- CI के बिना विकास में बहुत सारे बग उत्पन्न होते हैं जबकि CI के साथ विकास में कम बग उत्पन्न होते हैं
- सतत एकीकरण की महत्वपूर्ण गतिविधियाँ हैं 1) डीबी एकीकरण, 2) कोड निरीक्षण, 3) स्वचालित परिनियोजन, दस्तावेज़ निर्माण और संकलन।
- निर्माण कार्य निरंतर एक समर्पित Cl सर्वर का उपयोग करके होना चाहिए, न कि क्रॉन जॉब का।
- CI के महत्वपूर्ण तत्व हैं 1) संस्करण नियंत्रण प्रणाली 2) वर्चुअल मशीन 3) होस्ट CI टूल समाधान 4) उपकरण
- निरंतर एकीकरण प्रणाली आपको केवल एक ही स्रोत रिपोजिटरी बनाए रखने की अनुमति देती है
- CI/CD प्रक्रिया आपको बेहतर गुणवत्ता वाला सॉफ्टवेयर बनाने में मदद करती है
- सबसे महत्वपूर्ण सर्वोत्तम प्रथाएँ Azure निरंतर एकीकरण प्रक्रिया में जल्दी प्रतिबद्ध होना और बार-बार प्रतिबद्ध होना शामिल है, कभी भी टूटे हुए कोड को प्रतिबद्ध न करें
- इसका प्रमुख दोष यह है कि सीआई/सीडी पाइपलाइन प्रक्रिया यह है कि अच्छी तरह से विकसित परीक्षण-सूट को सीएल सर्वर के लिए कई संसाधनों की आवश्यकता होती है
- जेनकींस, Bambook, और टीम सिटी कुछ उपयोगी AWS सतत हैं एकीकरण उपकरण.