เพื่อให้เป็นตัวอย่างในทางปฏิบัติของความพยายามในการสร้างสร้างทำซ้ำอย่างแท้จริงพิจารณาดังต่อไปนี้ -
ไพพ์ไลน์ build ซึ่งเริ่มต้นด้วยที่เก็บ git ซึ่งไม่มีผู้ใช้สามารถเขียนประวัติหรือลบสาขาที่ไม่ได้รวม
ขั้นตอนแรก "สร้าง" หลังจากตรวจสอบซอร์สโค้ดคือการหมุนคอนเทนเนอร์ที่มีการอ้างอิงเวลา build ทั้งหมด
เอาต์พุตของคอนเทนเนอร์เวลาบิลด์ที่รันคือคอนเทนเนอร์ที่มีไบนารีที่คอมไพล์แล้ว
สิ่งสำคัญต่อความสามารถในการทำซ้ำของบิลด์แท็กต่อไปนี้จะถูกเพิ่มลงในคอนเทนเนอร์สุดท้าย:
- แฮชที่แท้จริงของซอร์สโค้ดในที่เก็บต้นฉบับและ url ของทั้ง git repo และสแน็ปช็อตบอลของรหัสที่อัปโหลดไปยังที่เก็บสิ่งประดิษฐ์
- เวอร์ชันที่แน่นอนของบิลด์คอนเทนเนอร์ที่ใช้เพื่อรันบิลด์
- เวอร์ชันพื้นฐานของอิมเมจพื้นฐานที่ไบนารีถูกโหลดเข้ามา
- ค่าของตัวแปร build-time ทั้งหมดที่ใช้เพื่อสร้างไบนารี
- เวอร์ชันของตัวเทียบท่าที่ทั้งสามคอนเทนเนอร์ที่สร้างขึ้นด้วยเช่นเดียวกับเวอร์ชันที่พวกมันทำงานอยู่เมื่อสร้างขึ้น
โดยการเพิ่มข้อมูลเมตาทั้งหมดนี้เราสามารถมั่นใจได้ว่า ณ จุดใดในอนาคตเราสามารถดึงชุดการพึ่งพาสร้างที่แน่นอน (ผ่านคอนเทนเนอร์สร้าง), รวบรวมไบนารีด้วยชุดขั้นตอนที่ทราบแน่นอน (ประดิษฐานบนคอนเทนเนอร์สร้าง) ) และจัดทำแพคเกจนี้ในอิมเมจพื้นฐานอื่นที่ทราบพร้อมการอ้างอิงแบบรันไทม์ทั้งหมด (โดยใช้แท็กอิมเมจพื้นฐาน) และสิ่งนี้สามารถขึ้นอยู่กับเวอร์ชันที่ถูกต้องแน่นอนของซอร์สโค้ดตามแท็กบนคอนเทนเนอร์
ตามหลักวิชาแล้วสิ่งนี้จะทำให้เรามีความสามารถในการสร้างรุ่นบิลด์
ความสำคัญของสิ่งนี้คือมันช่วยให้เราสามารถดูสิ่งที่กำลังทำงานอยู่ในการผลิตและแม้ว่าทุกอย่างจะมีความคืบหน้าอย่างมีนัยสำคัญรุ่นย้อนกลับและดึงรุ่นของรหัสภาพฐานและสร้างภาชนะที่ใช้เดิมเพื่อให้เราสามารถเช่น ใช้การแก้ไขด่วนกับเวอร์ชันนั้นก่อนที่จะสร้างใหม่ตามเดิมเพื่อให้เราสามารถปรับใช้ใหม่โดยรู้ว่ามันเป็นสิ่งประดิษฐ์เดียวกันโดยมีเดลต้าเท่านั้นที่เป็นฮอตฟิกซ์