Gerçekten tekrarlanabilir bir yapı oluşturma girişiminin pratik bir örneğini sağlamak için aşağıdakileri göz önünde bulundurun -
Hiçbir kullanıcının geçmişi yeniden yazamayacağı veya birleştirilmemiş dalları silemeyeceği git deposuyla başlayan bir derleme hattı.
Kaynak kodunu kontrol ettikten sonraki ilk "derleme" adımı, tüm derleme süresi bağımlılıklarını içeren bir kabı döndürmektir.
Çalışan derleme süresi kabının çıktısı, derlenmiş ikiliyi içeren bir kaptır.
Yapının tekrarlanabilirliği için daha önemli olan son etiketler son konteynere eklenir:
- Orijinal depodaki kaynak kodun tam karması ve bir artefakt deposuna yüklenen kodun hem git repo'sunun hem de katran topunun anlık görüntüsünün URL'si.
- Derlemeyi çalıştırmak için kullanılan derleme kabının tam sürümü.
- İkilinin yüklendiği orijinal temel görüntünün tam sürümü.
- İkili oluşturmak için kullanılan tüm oluşturma zamanı değişkenlerinin değerleri.
- Üç konteynerin de birlikte oluşturulduğu docker sürümü ve inşa ettikleri yerde çalıştıkları sürüm.
Tüm bu meta verileri ekleyerek, gelecekte herhangi bir noktada tam yapı bağımlılıkları kümesini (yapı kapsayıcısı aracılığıyla) dışarı çekebilmemizi, ikili dosyayı tam olarak bilinen bir dizi adımla derleyebilmemizi sağlayabiliriz (yapı kapsayıcısında yer alır) ) ve bunu tüm çalışma zamanı bağımlılıklarıyla (temel resim etiketini kullanarak) bilinen başka bir temel resme paketleyin ve bunların tümü, kapsayıcıdaki etikete dayalı olarak kaynak kodunun tam doğru sürümüne dayanabilir.
Teorik olarak bu bize bir derleme sürümünü tam olarak üretebilme yeteneğini vermelidir.
Bunun önemi, üretimde neyin çalıştığına bakmamıza izin veriyor ve her şey önemli ölçüde ilerlemiş olsa bile, geri dönüp orijinal olarak kullanılan kodun, temel görüntünün ve inşa konteynerinin sürümünü çekelim, örneğin, , tam olarak daha önce olduğu gibi yeniden oluşturmadan önce bu sürüme bir düzeltme uygulayın, böylece tek düzeltme düzeltmesi olan tek delta ile tam olarak aynı yapı olduğunu bilerek yeniden konuşlayabiliriz.