डॉक टैग वर्जनिंग के लिए सर्वोत्तम अभ्यास क्या हैं?


11

मैंने हाल ही में हमारे सीआई सर्वर को git कमिट पर docker की छवियाँ बनाने के लिए झुका दिया है।

हमारे पास लगभग 8 अलग-अलग कंटेनर हैं जो प्रत्येक अपनी भाषा / रूपरेखा के साथ निर्मित होते हैं। कुछ नोड हैं और उनके पास एक पैकेज है। अन्य, अजगर सेवाएं हैं जिनमें कोई शब्दार्थ संस्करण जानकारी नहीं है।

मेरा सवाल टैग बनाने के बारे में नहीं है, इसके टैग के लिए मान बनाने के बारे में है।

यह कैसे सुनिश्चित करें कि प्रत्येक टैग में विशिष्ट छवियों के लिए एक अद्वितीय शब्दार्थ संस्करण है? बिल्ड वर्जन को ट्रैक करने / बढ़ाने पर अधिकार किसका होना चाहिए?


टैग बनाने के लिए आपका वर्तमान तरीका क्या है?
030

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

जवाबों:


6

मैं आपको मेरी पोस्ट कपलिंग डॉकटर रजिस्ट्री और स्रोत नियंत्रण के लिए निर्देशित करूंगा, जहां आधिकारिक मंचों से उत्तर दिया गया docker.com । प्रतिबद्ध हैश और शाखा का नाम या टैग पर्याप्त है।

अपने डॉकरफ़ाइल में, बिल्ड के स्रोत को रिकॉर्ड करने के लिए एक LABEL का उपयोग करें। इसमें संभवतः वितरित स्रोत नियंत्रण (git, Mercurial) से शाखा हैश शामिल है, यदि प्रासंगिक हो तो शाखा का नाम, यदि मौजूद हो तो कोई भी टैग, और संभवत: अंतिम प्रतिबद्ध के टाइमस्टैम्प जैसे विवरण। docker का इतिहास और docker का निरीक्षण ये दिखाने में सक्षम होना चाहिए।

जब आप अपने चित्रों को पुश करते हैं, तो कम से कम दो बार, कमिटेड हैश के साथ और शाखा नाम के साथ "संस्करण" भाग (quay.io/mycorp/imagename:123abc7, quay.io/mycorp-imagename:dmaze-test) पर पुश करें। )। यदि रिलीज़ टैग आसानी से उपलब्ध हैं, तो CI सिस्टम को इन टैगों के साथ छवियों को भी धक्का देना चाहिए।

वर्तमान में हम शाखा नाम / प्रतिबद्ध हैश के संयोजन का उपयोग कर रहे हैं। हमारे लिए यह काफी है। जब वे उपयोगी IMO होते हैं तो टाइमस्टैम्प केवल अव्यवस्था जोड़ते हैं क्योंकि वे कुछ भी नहीं करते हैं जो कि हैश नहीं करता है।

मैं 030 से सहमत हूं :

जो एक निर्माण संस्करण पर नज़र रखने / बढ़ाने पर अधिकार होना चाहिए

अन्य टीमों के बीच उचित संचार के साथ, ऐसी चीजों को बनाए रखने के लिए सीआई की जिम्मेदारी 100% है।


1

यह कैसे सुनिश्चित करें कि प्रत्येक टैग में विशिष्ट छवियों के लिए एक अद्वितीय शब्दार्थ संस्करण है?

एक एक टैग बना सकता है जिसमें कई तत्व शामिल होते हैं, जैसे टाइमस्टैम्प, गिट कमिट हैश और अर्थ वर्जन का संयोजन। उत्तरार्द्ध को मैन्युअल रूप से सेट किया जाना है, जबकि पहले दो को स्वचालित किया जा सकता था। इस तरह के एक टैग के रूप में देख सकते हैं:

20171015141729-58617f500f7efe236c7ba6a1dfdf37a478b4c878-0.1.4

इस टैग में बिल्ड, कमिट और सिमेंटिक वर्जन की तारीख होती है। यदि एक डॉकटर छवि उत्पादन में चलती है और एक बग पाया जाता है, तो किसी को उत्पाद का संस्करण पता चलता है, जो कोड अंदर है और जब छवि बनाई गई थी और किन परिस्थितियों में बनाई गई थी।

बिल्ड वर्जन को ट्रैक करने / बढ़ाने पर अधिकार किसका होना चाहिए?

मेरी राय में यह सीआई की जिम्मेदारी होनी चाहिए क्योंकि यह प्रक्रियाओं को स्वचालित करने में सक्षम है और चूंकि टैग का निर्माण स्वचालित किया जा सकता है ऐसा उपकरण काम का सही उपकरण है।


1

मुझे लगता है कि आप जेन / सीडी की तरह सीआई / सीडी के लिए एक DevOps टूल का उपयोग करते हैं, मैं निम्नलिखित दृष्टिकोण का सुझाव देता हूं:

यदि आप जेनकिंस जैसे कुछ का उपयोग करते हैं-

  • आप अपनी नौकरी को इस तरह से कॉन्फ़िगर कर सकते हैं कि आप जेनकिंस पर्यावरण चर "BUILD_ID" का उपयोग कर सकते हैं, जो आपकी छवि को टैग करने के लिए ट्रिगर होने पर नौकरी की बिल्ड आईडी को पुनः प्राप्त करता है। इस तरह से आप अपने डॉक छवियों को नियंत्रित कर सकते हैं। कृपया नीचे दिए गए उदाहरण की जाँच करें।

उदाहरण के लिए: - sudo docker build -t <image_name>:<BUILD_ID>

इसलिए, यदि आपको अपने SCM के लिए तंत्र की तरह टैग मिला है, तो आप संबंधित बिल्ड ID में टैग की जाँच जॉब आधारित बिल्ड में या JENKINS HOME_FOLDER में बिल्ड आईडी के config.xml में कर सकते हैं।

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