2015-11-20 12 views
14

मेरे पास सतत वितरण में संस्करण के बारे में कुछ ठोस प्रश्न हैं। मुझे लगता है कि मैं वैश्विक वर्कफ़्लो को समझता हूं कि यह कम या कम है:निरंतर वितरण में संस्करण बनाना

1) Code 
2) Push to version Control 
3) Continuous Integration (unit, integration and end-to-end auto testing) 
4) Artifacts deployment 

संस्करण के बारे में क्या? बिल्ड संस्करणों का प्रबंधन कैसे करें?

मान लें कि हम एक मेवेन आधारित परियोजना पर अर्थपूर्ण संस्करण के साथ काम कर रहे हैं: major.minor.build

जब वीसीएस और सीआई सर्वर में डेवलपर प्रतिबद्ध परिवर्तन करता है, तो क्या सीआई सर्वर बिल्ड संस्करण को बढ़ाता है और वीसीएस में टैग बना सकता है?

क्या यह बिल्ड संस्करण स्रोत कोड में मौजूद है? यदि ऐसा है, तो वीसीएस को प्रत्येक धक्का के बाद, डेवलपर को परियोजना को अद्यतन करना चाहिए, क्योंकि सीआई सर्वर ने परियोजना पर परिवर्तन (संस्करण वृद्धि) किया है।

मैं थोड़ा उलझन में हूं और मैं सीडी वर्कफ़्लो को व्यावहारिक तरीके से समझना चाहता हूं।

+1

आपकी परिस्थितियों और लक्ष्यों के आधार पर यह दृष्टिकोण करने के कई तरीके हैं जो किसी दूसरे से बेहतर हो सकते हैं। ऐसी कई "मानक" किताबें हैं जो इन दृष्टिकोणों को कवर करती हैं ("इसे रिलीज़ करें" उनमें से एक है)। प्रश्न का उत्तर देकर शुरू करें: क्या आप चाहते हैं कि प्रत्येक निर्माण का परिणाम विशिष्ट रूप से संस्करणित आर्टिफैक्ट में हो। क्यूं कर? क्यों नहीं? या आप "मैन्युअल" (उदाहरण के लिए एक स्प्रिंट के बाद) तय करते हैं कि यह एक नए संस्करण के लिए समय है? – reto

+1

प्रश्न शायद http://programmers.stackexchange.com/ – reto

उत्तर

16

सामान्य तौर पर आप होना चाहिए:

  1. एक मैन्युअल रूप से प्रबंधित संस्करण संख्या।
  2. किसी भी "संदर्भ" संख्याओं की संख्या।

यदि आप सेमेस्टर की परवाह करते हैं या यदि आपको अन्य टूल्स/libs के लिए संगतता जानकारी प्रदान करना है तो पहला बिंदु महत्वपूर्ण है। यह केवल आप ही बता सकते हैं कि कोई नया "रिलीज" कुछ तोड़ता है - सबसे लोकप्रिय संकेत प्रणाली सेमेस्टर संस्करण नियमों का पालन कर रही है।

दूसरा बिंदु ("संदर्भ" संख्या) आपके लिए महत्वपूर्ण हो सकता है या नहीं भी हो सकता है। आपको आम तौर पर एक से अधिक की आवश्यकता नहीं होती है, सीआई/सीडी बिल्ड का संस्करण संख्या (प्रत्येक लोकप्रिय सीआई/सीडी सेवा में बिल्ड संस्करण संख्या आईडी होती है जो उस विशिष्ट "बिल्ड" को संदर्भित करती है)। इस संख्या का बिंदु यह है कि यदि आपको इसकी आवश्यकता हो तो आप आर्टिफैक्ट के संबंधित सीआई/सीडी बिल्ड/लॉग को तुरंत देख सकते हैं।

दो (या अधिक) भागों को मर्ज कैसे करें?

अलग-अलग "संस्करण" और "निर्माण" संख्याएं असामान्य नहीं हैं। असल में प्रत्येक आईओएस प्रोजेक्ट में डिफ़ॉल्ट रूप से होता है। उस स्थिति में आपके पास "संस्करण" संख्या मैन्युअल रूप से प्रबंधित की जाती है, और एक अलग "बिल्ड" नंबर स्वचालित रूप से प्रबंधित होता है। बिल्ड नंबर विरूपण साक्ष्य के नाम पर हो सकता है, या जब कोई एक बाइनरी (पूर्व के मामले में --version जानकारी ले कर मुद्रित किया जा सकता: $ brew info ->0.9.5 (git revision 18c48; last commit 2015-11-02)

वैकल्पिक रूप से आप या तो semver करने के लिए नए घटकों में जोड़ सकते हैं (x.x.x.BUILDNUM), उपयोग semver के अंतिम घटक (x.x.BUILDNUM - यदि आप एक सख्ती से वृद्धिशील BUILDNUM है मैं इस सिफारिश करेंगे नहीं) या बस विरूपण साक्ष्य के नाम पर "का निर्माण" नंबर शामिल

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

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

+0

धन्यवाद के लिए एक बेहतर फिट है !! आपने मुझे बहुत मदद की। एक और सवाल, अगर मैं आर्टिफैक्ट में बिल्ड नंबर डालना चुनता हूं और मैन्युअल रूप से वर्जन नंबर प्रबंधित करता हूं, तो मुझे लगता है कि मुझे वीसीएस में टैग करना चाहिए जब मैन्युअल रूप से संस्करण को बढ़ाया जाए और प्रत्येक बिल्ड में नहीं। क्या मैं सही हू? –

+0

हां, हमारे पास आमतौर पर एक स्क्रिप्ट होती है जो कि एक साधारण संस्करण टेक्स्ट फ़ाइल में आधारित होती है। जब हम संस्करण संख्या में वृद्धि करना चाहते हैं, तो हम इसे मैन्युअल रूप से चलाते हैं, यह इसे संस्करण फ़ाइल में बढ़ाता है और फिर एक प्रतिबद्धता और टैग बनाता है। आप निश्चित रूप से इसे मैन्युअल रूप से कर सकते हैं, लेकिन यह त्रुटियों के लिए अधिक प्रवण है। –

+0

संदर्भ के लिए, यह हमारी स्क्रिप्ट का एक साफ़ संस्करण है जो हमारी परियोजनाओं में से किसी एक के लिए संस्करण संख्या को बाधित करता है: https://gist.github.com/viktorbenei/d341e74c8321473c8a67 - पहले यह जांचता है कि क्या ऐसा कुछ भी है जो अभी तक प्रतिबद्ध नहीं है, तो यह संस्करण संख्या को टक्कर देने, परिवर्तन करने और संबंधित गिट टैग बनाने के लिए आगे बढ़ता है। –

संबंधित मुद्दे