CI/CD पाइपलाइन: उदाहरण के साथ सीखें
CI/CD पाइपलाइन क्या है?
CI/CD पाइपलाइन सॉफ़्टवेयर डिलीवरी की प्रक्रिया को स्वचालित करती है। यह कोड बनाता है, परीक्षण चलाता है, और सॉफ़्टवेयर के नए संस्करण को सुरक्षित रूप से तैनात करने में आपकी मदद करता है। CI/CD पाइपलाइन मैन्युअल त्रुटियों को कम करती है, डेवलपर्स को फ़ीडबैक प्रदान करती है, और तेज़ उत्पाद पुनरावृत्तियों की अनुमति देती है।
CI/CD पाइपलाइन किसी सॉफ़्टवेयर उत्पाद के पूरे जीवनचक्र में स्वचालन और निरंतर निगरानी का परिचय देती है। इसमें एकीकरण और परीक्षण चरण से लेकर डिलीवरी और परिनियोजन तक शामिल है। इन जुड़ी प्रथाओं को CI/CD पाइपलाइन कहा जाता है।
सतत एकीकरण, सतत वितरण और सतत परिनियोजन क्या है?
- निरंतर एकीकरण यह एक सॉफ्टवेयर डेवलपमेंट विधि है, जिसमें टीम के सदस्य दिन में कम से कम एक बार अपने काम को एकीकृत कर सकते हैं। इस विधि में, त्रुटि खोजने के लिए प्रत्येक एकीकरण को एक स्वचालित बिल्ड द्वारा जांचा जाता है।
- निरंतर प्रसव यह एक सॉफ्टवेयर इंजीनियरिंग पद्धति है जिसमें एक टीम एक छोटे चक्र में सॉफ्टवेयर उत्पाद विकसित करती है। यह सुनिश्चित करता है कि सॉफ्टवेयर को किसी भी समय आसानी से जारी किया जा सके।
- निरंतर तैनाती यह एक सॉफ्टवेयर इंजीनियरिंग प्रक्रिया है जिसमें उत्पाद की कार्यक्षमता स्वचालित परिनियोजन का उपयोग करके वितरित की जाती है। यह परीक्षकों को यह सत्यापित करने में मदद करता है कि कोडबेस में किए गए परिवर्तन सही हैं या नहीं, और यह स्थिर है या नहीं।
CI/CD पाइपलाइन के चरण
CI/CD पाइपलाइन उन चरणों का एक रन करने योग्य विनिर्देश है जो किसी भी डेवलपर को किसी भी सॉफ़्टवेयर का नया संस्करण देने के लिए करना चाहिए। प्रत्येक चरण में विफलता ईमेल के माध्यम से एक अधिसूचना ट्रिगर करती है, Slack, या अन्य संचार प्लेटफ़ॉर्म। यह जिम्मेदार डेवलपर्स को महत्वपूर्ण मुद्दों के बारे में जानने में सक्षम बनाता है।
CI/CD पाइपलाइन के महत्वपूर्ण चरण इस प्रकार हैं:
स्रोत चरण
स्रोत चरण में, CI/CD पाइपलाइन को कोड रिपोजिटरी द्वारा ट्रिगर किया जाता है। प्रोग्राम में कोई भी परिवर्तन CI/CD टूल को एक अधिसूचना ट्रिगर करता है जो एक समतुल्य पाइपलाइन चलाता है। अन्य सामान्य ट्रिगर्स में उपयोगकर्ता द्वारा शुरू किए गए वर्कफ़्लो, स्वचालित शेड्यूल और अन्य पाइपलाइनों के परिणाम शामिल हैं।
स्टेज बनाएँ
यह CI/CD पाइपलाइन का दूसरा चरण है जिसमें आप स्रोत कोड और उसकी निर्भरताओं को मर्ज करते हैं। यह मुख्य रूप से सॉफ़्टवेयर का एक रन करने योग्य इंस्टेंस बनाने के लिए किया जाता है जिसे आप संभावित रूप से अंतिम उपयोगकर्ता को भेज सकते हैं।
प्रोग्राम जो निम्न भाषाओं में लिखे गए हैं C++, Java, सी, या गो भाषा संकलित किया जाना चाहिए। दूसरी ओर, Javaलिपि, Python, और रूबी प्रोग्राम बिल्ड चरण के बिना काम कर सकते हैं।
बिल्ड चरण में असफल होने का अर्थ है कि परियोजना में मूलभूत रूप से गलत कॉन्फ़िगरेशन है, इसलिए बेहतर है कि आप इस तरह की समस्या का तुरंत समाधान करें।
परीक्षण चरण
परीक्षण चरण में कोड की शुद्धता और सॉफ़्टवेयर के व्यवहार को सत्यापित करने के लिए स्वचालित परीक्षणों का निष्पादन शामिल है। यह चरण आसानी से पुनरुत्पादित होने वाले बग को क्लाइंट तक पहुँचने से रोकता है। स्वचालित परीक्षण लिखना डेवलपर्स की ज़िम्मेदारी है।
तैनाती चरण
यह आखिरी चरण है जहां आपका उत्पाद लाइव हो जाता है। एक बार जब बिल्ड सभी आवश्यक परीक्षण परिदृश्यों से सफलतापूर्वक गुजर जाता है, तो यह लाइव सर्वर पर तैनात करने के लिए तैयार है।
CI/CD पाइपलाइन का उदाहरण
यहाँ CI/CD पाइपलाइन का उदाहरण दिया गया है:
- स्रोत कोड नियंत्रण: GitHub पर निजी रिपॉजिटरी के रूप में कोड होस्ट करें। इससे आपको अपने एप्लिकेशन को प्रमुख सेवाओं और सॉफ़्टवेयर के साथ एकीकृत करने में मदद मिलेगी।
- लगातार एकीकरण: निरंतर एकीकरण और वितरण प्लेटफ़ॉर्म का उपयोग करें CircleCI और हर कोड को कमिट करें। जब परिवर्तन अधिसूचित होते हैं, तो यह उपकरण GitHub में उपलब्ध कोड को खींच लेगा और परीक्षण बनाने और चलाने की प्रक्रिया करेगा।
- UAT पर कोड तैनात करें: कॉन्फ़िगर CircleCI अपने कोड को AWS UAT सर्वर पर तैनात करने के लिए.
- उत्पादन में तैनात करें: आपको UAT में कोड तैनात करने के लिए निरंतर एकीकरण चरणों का पुनः उपयोग करना होगा।
CI/CD पाइपलाइन सर्वोत्तम अभ्यास
यहां CI/CD पाइपलाइन की सर्वोत्तम प्रथाएं दी गई हैं:
- वर्तमान विकास प्रक्रिया को लिखें, ताकि आप जान सकें कि किन प्रक्रियाओं को बदलने की आवश्यकता है और किन प्रक्रियाओं को आसानी से स्वचालित किया जा सकता है।
- आगे बढ़ने से पहले परियोजना के एक छोटे से प्रमाण के साथ शुरुआत करें और संपूर्ण विकास प्रक्रिया को एक बार में पूरा करें।
- एक से अधिक चरण वाली पाइपलाइन स्थापित करें जिसमें पहले तीव्र मूलभूत परीक्षण चलाए जाएं।
- प्रत्येक कार्यप्रवाह को समान, स्वच्छ और पृथक वातावरण से प्रारंभ करें।
- ओपन सोर्स टूल चलाएं जो कोड शैली से लेकर सुरक्षा स्कैनिंग तक सब कुछ कवर करते हैं।
- प्रत्येक शाखा के विरुद्ध परीक्षणों के मानक सेट को चलाकर अपने कोड की गुणवत्ता की निरंतर जांच करने के लिए एक बेहतर कोड हब स्थापित करें।
- किसी समस्या को सहयोगात्मक तरीके से हल करने के लिए प्रत्येक पुल अनुरोध की सहकर्मी कोड समीक्षा करें।
- सीडी ऑटोमेशन में बदलाव शुरू करने से पहले आपको सफलता के मापदंड निर्धारित करने होंगे। इससे आपको अपने सॉफ़्टवेयर का लगातार विश्लेषण करने, प्रगति विकसित करने और जहाँ ज़रूरत हो, उसे बेहतर बनाने में मदद मिलेगी।
CI/CD पाइपलाइनों के लाभ
CI/CD पाइपलाइन के लाभ/सुविधाएँ इस प्रकार हैं:
- निर्माण और परीक्षण आसानी से मैन्युअल रूप से किया जा सकता है।
- इससे कोड की स्थिरता और गुणवत्ता में सुधार हो सकता है।
- लचीलेपन में सुधार होता है और नई कार्यक्षमताएं प्रदान करने की क्षमता होती है।
- CI/CD पाइपलाइन संचार को सुव्यवस्थित कर सकती है।
- यह सॉफ्टवेयर वितरण की प्रक्रिया को स्वचालित कर सकता है।
- आपको तेजी से ग्राहक प्रतिक्रिया प्राप्त करने में मदद करता है।
- CI/CD पाइपलाइन आपके उत्पाद की दृश्यता बढ़ाने में आपकी मदद करती है।
- यह आपको मैन्युअल त्रुटियों को दूर करने में सक्षम बनाता है।
- लागत और श्रम कम हो जाता है.
- CI/CD पाइपलाइनें सॉफ्टवेयर विकास जीवनचक्र को तेज़ बना सकती हैं।
- इसमें स्वचालित पाइपलाइन परिनियोजन है।
- सीडी पाइपलाइन डेवलपर से ग्राहक तक तीव्र फीडबैक लूप प्रदान करती है।
- संगठन के कर्मचारियों के बीच संचार में सुधार करता है।
- यह डेवलपर्स को यह जानने में सक्षम बनाता है कि बिल्ड में कौन से परिवर्तन ब्रोकरेज को प्रभावित कर सकते हैं और भविष्य में उनसे कैसे बचा जा सकता है।
- स्वचालित परीक्षणों के साथ-साथ कुछ मैन्युअल परीक्षण, उत्पन्न होने वाली किसी भी समस्या को ठीक करने में मदद करते हैं।
महत्वपूर्ण CI/CD उपकरण
यहां महत्वपूर्ण CI/CD उपकरण दिए गए हैं:
1) जेनकिंस
जेनकिंस एक ओपन-सोर्स निरंतर एकीकरण सर्वर है जो निरंतर एकीकरण प्रक्रिया (और केवल यही नहीं) को स्वचालित तरीके से प्राप्त करने में मदद करता है। जेनकिंस मुफ़्त है और पूरी तरह से लिखा गया है Javaजेनकिंस दुनिया भर में व्यापक रूप से उपयोग किया जाने वाला एप्लिकेशन है, जिसकी लगभग 300k इंस्टॉलेशन हैं और यह दिन-प्रतिदिन बढ़ रही है।
विशेषताएं:
- जेनकिन दिन में कई बार कोड का निर्माण और परीक्षण करेगा।
- स्वचालित निर्माण और परीक्षण प्रक्रिया, समय की बचत, और दोषों में कमी।
- प्रत्येक सफल निर्माण और परीक्षण के बाद कोड को तैनात किया जाता है।
- विकास चक्र तेज़ है.
लिंक: https://www.jenkins.io/download/
2) Bamboo
Bamboo यह एक निरंतर एकीकरण बिल्ड सर्वर है जो एक ही स्थान पर स्वचालित बिल्ड, परीक्षण और रिलीज़ करता है। यह JIRA सॉफ़्टवेयर और Bitbucket के साथ सहजता से काम करता है।
विशेषताएं:
- समानांतर बैच परीक्षण चलाएँ
- की स्थापना Bamboo बहुत सरल है
- प्रति-पर्यावरण अनुमति सुविधा डेवलपर्स और QA को अपने वातावरण में तैनाती करने की अनुमति देती है
- अंतर्निहित Git शाखाकरण और वर्कफ़्लो। यह स्वचालित रूप से शाखाओं को मर्ज करता है।
लिंक: https://www.atlassian.com/software/bamboo
3) सर्किलसीआई
सर्किलCi एक लचीला CI उपकरण है जो किसी भी वातावरण में क्रॉस-प्लेटफ़ॉर्म मोबाइल ऐप की तरह चलता है, Python API सर्वर, या Docker क्लस्टर। यह टूल बग को कम करता है और एप्लिकेशन की गुणवत्ता में सुधार करता है।
विशेषताएं:
- बिल्ड एनवायरनमेंट का चयन करने की अनुमति देता है
- सहित कई भाषाओं का समर्थन करता है C++, Javaस्क्रिप्ट, NET, PHP, Python, और रूबी
- डॉकर का समर्थन आपको एक अनुकूलित वातावरण कॉन्फ़िगर करने देता है।
- जब कोई नया बिल्ड ट्रिगर होता है तो किसी भी पंक्तिबद्ध या चल रहे बिल्ड को स्वचालित रूप से रद्द कर दें।
लिंक: https://circleci.com/
आईटी लीडर्स के लिए CI/CD पाइपलाइन क्यों महत्वपूर्ण है?
- CI/CD पाइपलाइन विश्वसनीयता में सुधार कर सकती है।
- यह आईटी टीम को डेवलपर्स के लिए अधिक आकर्षक बनाता है।
- सीआई/सीडी पाइपलाइन आईटी नेताओं को संस्करण नियंत्रण से कोड खींचने और सॉफ्टवेयर निर्माण को निष्पादित करने में मदद करती है।
- कोड को लक्ष्य कंप्यूटिंग वातावरण में ले जाने में सहायता करता है।
- परियोजना नेताओं को पर्यावरण चरों को आसानी से प्रबंधित करने और लक्ष्य पर्यावरण के लिए कॉन्फ़िगर करने में सक्षम बनाता है।
- परियोजना प्रबंधक वेब सेवाओं, डेटाबेस सेवाओं, एपीआई सेवाओं आदि जैसी सेवाओं के लिए पुश एप्लिकेशन घटकों को प्रकाशित कर सकते हैं।
- डिलीवरी स्थिति पर लॉग डेटा और अलर्ट प्रदान करना।
- यह प्रोग्रामर्स को आगे बढ़ने से पहले कोड में किए गए परिवर्तनों को सत्यापित करने में सक्षम बनाता है, जिससे उत्पादन में दोषों की संभावना कम हो जाती है।
सीआई/सीडी पाइपलाइन केपीआई
- चक्र या तैनाती समय: चक्र समय निर्माण चरण से उत्पादन तक जाने में लगने वाला समय है। आप विकास प्रक्रिया चरणों को मापकर औसत जीवन चक्र समय प्राप्त कर सकते हैं। यह मीट्रिक आपकी प्रक्रिया में बाधाओं और विकास समय की समग्र गति के बारे में जानकारी देगा।
- विकास आवृत्ति: विकास आवृत्ति आपको स्वचालन के दौरान पाई जाने वाली बाधाओं का विश्लेषण करने की अनुमति देती है। जितनी अधिक बार छोटी रिलीज़ होती हैं, दोषों का जोखिम कम होता है और पाए जाने पर उन्हें ठीक किया जाता है। ऐसा मीट्रिक आपकी टीम की दक्षता का एक समग्र माप है।
- लीड समय बदलें: यह विकास चरण के आरंभिक समय से लेकर परिनियोजन तक का मापन करता है। यह मीट्रिक संपूर्ण विकास प्रक्रिया का संकेतक है और यह भी बताता है कि टीम एक साथ कितनी अच्छी तरह काम करती है।
- परिवर्तन विफलता दर: यह इस बात पर ध्यान केंद्रित करता है कि विकास कितनी बार सफल होता है, तथा कितनी बार असफल होता है।
- एमटीटीआर बनाम एमटीटीएफ: MTTR (रिकवरी का औसत समय) वह समय है जो आपकी टीम को विफलता से उबरने के लिए चाहिए। MTTF (विफलता का औसत समय) फिक्स और आउटेज के बीच के समय की मात्रा को मापता है। ये मीट्रिक टीम की प्रतिक्रिया देने और समस्याओं को ठीक करने की क्षमता का प्रतिबिंब हैं।
सारांश
- CI/CD पाइपलाइन सॉफ्टवेयर वितरण की प्रक्रिया को स्वचालित करती है।
- CI/CD पाइपलाइन एक सॉफ्टवेयर उत्पाद के पूरे जीवनचक्र में स्वचालन और निरंतर निगरानी प्रस्तुत करती है।
- सतत एकीकरण एक सॉफ्टवेयर विकास पद्धति है, जिसमें टीम के सदस्य दिन में कम से कम एक बार अपने काम को एकीकृत कर सकते हैं।
- सतत वितरण एक सॉफ्टवेयर इंजीनियरिंग पद्धति है जिसमें एक टीम एक छोटे चक्र में सॉफ्टवेयर उत्पाद विकसित करती है।
- सतत परिनियोजन एक सॉफ्टवेयर इंजीनियरिंग प्रक्रिया है जिसमें उत्पाद कार्यात्मकताएं स्वचालित परिनियोजन का उपयोग करके वितरित की जाती हैं।
- CI/CD पाइपलाइन के चार चरण हैं 1) स्रोत चरण, 2) निर्माण चरण, 3) परीक्षण चरण, 4) परिनियोजन चरण।
- महत्त्वपूर्ण सीआई/सीडी उपकरण जेनकिन्स, बैम्बो और सर्कल सीआई हैं।
- CI/CD पाइपलाइन विश्वसनीयता में सुधार कर सकती है।
- सीआई/सीडी पाइपलाइन आईटी टीम को डेवलपर्स के लिए अधिक आकर्षक बनाती है।
- चक्र समय निर्माण चरण से उत्पादन तक जाने में लगने वाला समय है।
- विकास आवृत्ति आपको स्वचालन के दौरान पाई जाने वाली बाधाओं का विश्लेषण करने की अनुमति देती है।
- परिवर्तन लीड समय विकास चरण के आरंभ से लेकर परिनियोजन तक के समय को मापता है।
- परिवर्तन विफलता दर, विकास के सफल होने की संख्या बनाम इसके असफल होने की संख्या पर केंद्रित होती है।
- MTTR (रिकवरी का औसत समय) वह समय है जो आपकी टीम को विफलता से उबरने के लिए आवश्यक होता है।
- MTTF (विफलता का औसत समय) सुधार और व्यवधान के बीच के समय की मात्रा को मापता है।