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