परिचय
वर्जनिंग सॉफ्टवेयर विकास और पैकेज प्रबंधन का एक महत्वपूर्ण पहलू है। जैसे-जैसे सॉफ़्टवेयर विकसित होता है, उचित संस्करण यह सुनिश्चित करता है कि निर्भरताओं को सटीक रूप से ट्रैक किया जाता है, परिवर्तनों को प्रभावी ढंग से संप्रेषित किया जाता है, और सिस्टम स्थिर रहते हैं।
वर्जनिंग क्यों मायने रखती है
सॉफ्टवेयर समय के साथ बदलता है। सॉफ़्टवेयर की आवश्यकताएँ समान नहीं रहती हैं।
सॉफ्टवेयर का विकास:
- कार्यक्षमता वृद्धि: यह जो कार्यक्षमता प्रदान करता है और इसका उपयोग फीडबैक के आधार पर बढ़ेगा, बदलेगा और अनुकूलित होगा।
- प्लेटफार्म विकास: किसी एप्लिकेशन की होस्टिंग नए ऑपरेटिंग सिस्टम, नए फ्रेमवर्क और उसके संस्करणों के साथ भी विकसित हो सकती है।
- बग फिक्स: मूल कार्यान्वयन में खामियां और बग हो सकते हैं।
- निरंतर परिवर्तन: परिवर्तन का कारण जो भी हो, यह संभावना नहीं है कि सॉफ़्टवेयर स्थिर है और उसे बदलने की आवश्यकता नहीं है।
निर्भरता प्रभाव:
चूंकि आपके द्वारा बनाया गया सॉफ़्टवेयर अन्य घटकों पर निर्भरता लेता है, इसलिए आपके सॉफ़्टवेयर का निर्माण करते समय आपके द्वारा बनाए गए या उपयोग किए जाने वाले घटकों और पैकेजों के लिए भी यही लागू होता है।
कोडबेस बनाए रखने के लिए सही संस्करण आवश्यक हो जाता है ताकि यह ट्रैक किया जा सके कि वर्तमान में सॉफ़्टवेयर के किस टुकड़े का उपयोग किया जा रहा है।
संस्करण और निर्भरता प्रबंधन
वर्जनिंग निर्भरता प्रबंधन के लिए भी प्रासंगिक है, क्योंकि यह पैकेज के संस्करणों और घटकों से संबंधित है।
ट्रैकिंग निर्भरता:
प्रत्येक निर्भरता को उसके नाम और संस्करण से पहचाना जाता है। यह उपयोग किए जा रहे सटीक पैकेजों पर नज़र रखने की अनुमति देता है।
- विशिष्ट पहचान: नाम + संस्करण विशिष्ट रूप से एक पैकेज की पहचान करता है।
- स्वतंत्र जीवनचक्र: प्रत्येक पैकेज का अपना जीवनचक्र और परिवर्तन की दर होती है।
- संस्करण नियंत्रण: किस पैकेज संस्करणों का उपयोग किया जाता है, इस पर सटीक नियंत्रण सक्षम करता है।
उचित संस्करण के लाभ:
- प्रतिलिपि प्रस्तुत करने योग्य बनाता है: सुनिश्चित करें कि बिल्ड लगातार परिणाम देते हैं।
- निर्भरता समाधान: पैकेज प्रबंधक सही संस्करणों को हल कर सकते हैं।
- प्रभाव आकलन: नए संस्करणों में परिवर्तन के दायरे को समझें।
- रोलबैक क्षमता: समस्याएँ उत्पन्न होने पर पिछले संस्करणों पर वापस जाएँ।
अपरिवर्तनीय पैकेज
जैसे-जैसे पैकेजों को नए संस्करण मिलते हैं, आपका कोडबेस चुन सकता है कि इसके द्वारा उपभोग किए जाने वाले पैकेजों के नए संस्करण का उपयोग कब करना है।
संस्करण विनिर्देश
यह उस पैकेज के विशिष्ट संस्करण को निर्दिष्ट करके ऐसा करता है जिसकी उसे आवश्यकता होती है। इसका तात्पर्य यह है कि पैकेज में बदलने पर हमेशा एक नया संस्करण होना चाहिए।
अपरिवर्तनीयता क्यों मायने रखती है:
जब भी कोई पैकेज किसी फ़ीड में प्रकाशित किया जाता है, तो उसे अब बदलने की अनुमति नहीं दी जानी चाहिए। यदि बदला जाता है, तो यह कोड में संभावित ब्रेकिंग परिवर्तन शुरू करने का जोखिम होगा।
मूल सिद्धांत:
संक्षेप में, एक प्रकाशित पैकेज अपरिवर्तनीय है।
पैकेज अपरिवर्तनीयता नियम
पैकेज के मौजूदा संस्करण को बदलने या अपडेट करने की अनुमति नहीं है। अधिकांश पैकेज फ़ीड उन कार्यों की अनुमति नहीं देते हैं जो वर्तमान संस्करण को बदल देंगे।
अपरिवर्तनीयता का प्रभाव:
- विश्वसनीयता: उपभोक्ता भरोसा कर सकते हैं कि कोई संस्करण अप्रत्याशित रूप से नहीं बदलता है।
- स्थिरता: सभी उपभोक्ताओं को किसी दिए गए संस्करण के लिए एक ही पैकेज मिलता है।
- प्रतिभूति: मौजूदा संस्करणों के दुर्भावनापूर्ण संशोधन को रोकता है।
- ऑडिटेबिलिटी: संस्करण इतिहास बरकरार है और पता लगाने योग्य है।
संस्करण प्रगति
परिवर्तन के आकार के बावजूद, एक पैकेज को केवल एक नया संस्करण पेश करके अपडेट किया जा सकता है।
नए संस्करण में परिवर्तन के प्रकार और प्रभाव को इंगित करना चाहिए।
संस्करण क्रमांकन संचार करता है:
- परिवर्तन की गुंजाइश: प्रमुख, मामूली, या पैच अपडेट।
- अनुकूलता: ब्रेकिंग बनाम नॉन-ब्रेकिंग परिवर्तन।
- गुणवत्ता स्तर: प्रीरिलीज़ बनाम स्थिर रिलीज़।
- इरादा: अपडेट का मतलब क्या है।
मॉड्यूल अवलोकन
यह मॉड्यूल पैकेजिंग के लिए संस्करण रणनीतियों , संस्करण के लिए सर्वोत्तम प्रथाओं और पैकेज प्रचार की व्याख्या करता है।
कवर किए गए विषय:
- आर्टिफैक्ट संस्करण बुनियादी बातें: संस्करण प्रकार और योजनाओं को समझना।
- सिमेंटिक संस्करण: लगातार संचार के लिए SemVer 2.0 को अपनाना।
- Azure कलाकृतियों के दृश्य: का उपयोग करना @Local, , @Prereleaseऔर @Release दृश्य।
- पैकेज प्रचार: गुणवत्ता स्तरों के बीच पैकेज ले जाना।
- स्वचालित संस्करण: CI/CD पाइपलाइनों से पैकेज को आगे बढ़ाना।
- सर्वोत्तम प्रथाएं: प्रभावी संस्करण रणनीतियों को लागू करना।
सीखने के उद्देश्य
इस मॉड्यूल को पूरा करने के बाद, छात्र और पेशेवर कर सकते हैं:
- संस्करण के महत्व को समझें: पहचानें कि निर्भरता प्रबंधन और सॉफ़्टवेयर स्थिरता के लिए उचित संस्करण क्यों महत्वपूर्ण है।
- संस्करण रणनीतियों को लागू करें: पैकेज के लिए प्रभावी संस्करण नंबरिंग योजनाओं को डिजाइन और लागू करें।
- सिमेंटिक संस्करण का उपयोग करें: सुसंगत संस्करण संचार के लिए सिमेंटिक संस्करण (SemVer 2.0) सिद्धांतों को लागू करें।
- पैकेज की गुणवत्ता प्रबंधित करें: पैकेजों को गुणवत्ता स्तर से अलग करने के लिए Azure Artifacts दृश्यों का उपयोग करें।
- पैकेजों को बढ़ावा दें: प्रीरिलीज़ से उत्पादन तक गुणवत्ता वाले फाटकों के माध्यम से पैकेज ले जाएं।
- स्वचालित संस्करण: उपयुक्त संस्करण संख्याओं के साथ बिल्ड पाइपलाइनों से पैकेज पुश करें।
- सर्वोत्तम प्रथाओं को लागू करें: संस्करण और पैकेज प्रबंधन के लिए उद्योग मानकों का पालन करें।
आवश्यकताएँ
- DevOps समझ: DevOps क्या है और इसकी अवधारणाओं की बुनियादी समझ।
- संस्करण नियंत्रण ज्ञान: संस्करण नियंत्रण सिद्धांतों से परिचित होना सहायक है लेकिन आवश्यक नहीं है।
- सॉफ्टवेयर वितरण अनुभव: सॉफ़्टवेयर वितरित करने वाले संगठन में अनुभव होना फायदेमंद है।
- Azure DevOps एक्सेस: आपको कुछ अभ्यासों के लिए एक Azure DevOps संगठन और एक टीम प्रोजेक्ट बनाने की आवश्यकता है। यदि आपके पास यह अभी तक नहीं है, तो देखें:
- पैकेज प्रबंधन मूल बातें: पिछले मॉड्यूल से पैकेज, फ़ीड और निर्भरता प्रबंधन की समझ।