बिल्ड रिलीज करने के लिए आपको किस बिंदु पर स्विच करना चाहिए?


17

Jez Humble's Continuous Delivery में से एक प्रथा एक यह है कि आप एक पैकेज का निर्माण करें और फिर इसे अपने द्वारा तैनात प्रत्येक वातावरण में छोड़ दें, ताकि उत्पादन में जाने से पहले तैनाती और कलाकृतियों का कई बार स्वयं परीक्षण किया जा सके।

मैं इस विचार का पूरा समर्थन करता हूं।

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

तो, पहले सिद्धांत का पालन करने वाले लोगों के लिए, आप डिबग से रिलीज़ बिल्ड पर किस बिंदु पर स्विच करते हैं?

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

नोट: मुझे पता है कि यह वास्तव में व्याख्या की गई भाषाओं पर लागू नहीं होता है क्योंकि आप आमतौर पर इसे बिल्ड टाइम पर करने के बजाय कॉन्फ़िगरेशन में स्विच को फ्लिक कर सकते हैं।


आपके उत्तर के लिए धन्यवाद। विचार के लिए अच्छा भोजन। लेकिन मुझे लगता है कि "बदलती बिल्ड का बिंदु ज्यादातर त्रुटियों के लिए प्रजनन लागत पर निर्भर करता है" मेरी विचार प्रक्रिया को साफ़ करने के लिए टिक हो जाता है।
पीडीआर

जवाबों:


5

तो, पहले सिद्धांत का पालन करने वाले लोगों के लिए, आप डिबग से रिलीज़ बिल्ड पर किस बिंदु पर स्विच करते हैं?

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

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


3

तो, पहले सिद्धांत का पालन करने वाले लोगों के लिए, आप डिबग से रिलीज़ बिल्ड पर किस बिंदु पर स्विच करते हैं?

जैसे ही हम QA में जाते हैं हम बिल्ड रिलीज को स्विच कर देते हैं। लेकिन जब कभी हम रिलीज का निर्माण करते हैं तो हमारी बिल्ड प्रक्रिया भी डीएलएस के डिबग संस्करण का निर्माण करती है। यह हमें जल्दी से क्यूए वातावरण में डिबग डीएलएस को छोड़ने और यदि आवश्यक हो तो अतिरिक्त जानकारी प्राप्त करने की अनुमति देता है।

Dlls के रिलीज़ और डीबग संस्करण दोनों को कई वर्षों तक बैकअप और रखा जाता है।


2

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

यह तैनाती अभी भी उत्पादन में है , इसलिए यह 'डीबग' मोड नहीं है। लेकिन यह भी माना जाता है कि परीक्षण अच्छी तरह से किया जाता है।

बेशक, डिबग मोड ऑफ के साथ, कोड का त्वरित डिबग (साइट पर) मुश्किल हो सकता है। लेकिन अगर रिलीज विफल हो गई है, तो उत्पादन वापस रिलीज होने के लिए वापस स्विच करता है।

हालांकि, हम एक समान वातावरण को बनाए रखने या बनाने की कोशिश करते हैं, जो फिर से परीक्षण करने के लिए ऐसे वातावरण को पुन: पेश कर सकता है। (मुझे पता है कि यह ऐसा करने के लिए तुच्छ नहीं है) लेकिन हमें कभी-कभी लेनदेन / आदानों को पुन: प्रस्तुत करने की आवश्यकता होती है।

मुद्दा यह है कि कितना प्रलोभन, डिबग मोड रिलीज उत्पादन में नहीं होना चाहिए । हालांकि, मैं यह नहीं कहूंगा कि यह एक नियम है।

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

यह सुनिश्चित करने के लिए कुछ अन्य प्रथाएं हैं कि निर्माण प्रक्रिया ही काफी दोषपूर्ण नहीं है। इसे देखें: राड वातावरण में रिलीज की गुणवत्ता में सुधार करने के लिए एक सरल तरीके


2

हमारे पास डिबग बिल्ड बनाने के लिए हमारी डेवलपर मशीनें हैं। लेकिन एक बार जब देवता कोड करते हैं, तो हमारे निरंतर एकीकरण वातावरण (टीमसिटी) में एक तैनाती पैकेज बनाया जाता है और इसे रिलीज के लिए बनाया जाता है। इसलिए जब भी हम QA परिनियोजित करने का निर्णय लेते हैं, हम CI सर्वर से नवीनतम परिनियोजन पैकेज लेते हैं और इसे बाहर धकेलते हैं, इसलिए इसे हमेशा जारी रखा जाता है जब तक कि यह एक देव मशीन पर न हो।

BTW, कुछ भाषाओं के लिए, यहां तक ​​कि जब रिलीज के लिए निर्माण किया जाता है, तब भी आप डिबग प्रतीक बना सकते हैं। .NET में, उदाहरण के लिए, "pdb-only" सेटिंग है जो अनुकूलन के लिए अनुमति देता है लेकिन फिर भी डिबग फ़ाइल बनाता है। स्पष्ट रूप से एक रिलीज संस्करण के खिलाफ डिबगिंग मुश्किल है क्योंकि यह लाइन-फॉर-लाइन समकक्ष नहीं है, लेकिन यह अभी भी एक चुटकी में सहायक हो सकता है।

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