Liman işçisi etiket sürümlemesi için en iyi uygulamalar nelerdir?


11

Son zamanlarda git taahhüt üzerine liman işçisi görüntüleri oluşturmak için CI sunucuları bağladım.

Her biri kendi dili / çerçeveleri olan yaklaşık 8 farklı konteynere sahibiz. Bazıları düğümdür ve bir paketi vardır. Json, diğerleri anlamsal sürüm bilgisi içermeyen python hizmetleridir.

Benim sorum etiketlerin nasıl oluşturulacağı değil, etiket için değerlerin oluşturulmasıyla ilgili.

Her bir etiketin belirli resimler için benzersiz bir semantik sürüm numarasına sahip olmasını nasıl sağlayabilirim? Derleme sürümünü izleme / artırma yetkisi kim olmalıdır?


Etiketleri oluşturmak için mevcut yaklaşımınız nedir?
030

Ne istediğini gördüğünü duydum. İnsan olarak atanması gereken "anlamsal sürüm numarası" diyorsunuz (yapay zekalarımız henüz bir taahhüdün anlambilimine karar verecek kadar gelişmiş değil ...). Ama sonra "derleme sürümünü artırmak" hakkında soruyorsunuz. Öyleyse, aslında ne ile ilgileniyorsunuz? Hangi şeylerin sadece "arttığından" emin olmak için (bir SCN / sistem değişiklik numarası veya herhangi bir şey gibi)? Veya sürüm numarasının anlamsal içeriğiyle mi ilgileniyorsunuz (yani, uyumsuz değişiklikler olup olmadığı)?
AnoE

Yanıtlar:


6

Seni dmaze'nin resmi forums.docker.com adresinden yanıtladığı, Coupling docker kayıt defterine ve kaynak kontrolüne yönlendirirdim . İşleme karma ve şube adı veya etiketleri yeterlidir.

Dockerfile dosyanızda, yapının kaynağını kaydetmek için bir ETİKET kullanın. Muhtemelen dağıtılmış kaynak denetiminden (git, Mercurial) gelen sağlama karmasını, ilgiliyse şube adını, varsa yayın etiketlerini ve muhtemelen son işlemin zaman damgası gibi ayrıntıları içerir. docker geçmişi ve docker incelemesi bunları gösterebilmelidir.

Liman işçisine resimlerinizi aktardığınızda, bunları komut karmasıyla ve şube adıyla "sürüm" bölümü olarak en az iki kez itin (quay.io/mycorp/imagename:123abc7, quay.io/mycorp/imagename:dmaze-test ). Yayın etiketleri kolayca mevcutsa, CI sistemi bu etiketleri içeren görüntüleri de itmelidir.

Şu anda şube adı / karma karmasının bir kombinasyonunu kullanıyoruz. Bizim için bu yeterli gibi görünüyor. IMO yararlı olduklarında zaman damgaları, yalnızca karma karmasının sağlamadığı bir şey sağlamadığı için karmaşa ekleyin.

Ben katılıyorum 030 ile ilgili:

bir derleme sürümünü izleme / artırma konusunda otorite kim olmalıdır

% 100, diğer ekipler arasında uygun iletişim ile bu tür şeyleri sürdürmek için CI'nin sorumluluğundadır.


1

Her bir etiketin belirli resimler için benzersiz bir semantik sürüm numarasına sahip olmasını nasıl sağlayabilirim?

Birden çok öğeden oluşan bir etiket oluşturulabilir, örneğin bir zaman damgası, git commit hash ve semantik versiyonun bir kombinasyonu. İlk ikisi otomatik olarak ayarlanabilirken, ikincisi manuel olarak ayarlanmalıdır. Böyle bir etiket aşağıdaki gibi görünebilir:

20171015141729-58617f500f7efe236c7ba6a1dfdf37a478b4c878-0.1.4

Bu etiket derleme tarihini, işleme ve anlamsal sürümünü içerir. Bir docker görüntüsü üretimde çalışır ve bir hata bulunursa, ürünün sürümünü, içindeki kodu ve görüntünün ne zaman oluşturulduğunu ve hangi koşullar altında olduğunu bilir.

Derleme sürümünü izleme / artırma yetkisi kim olmalıdır?

Bence bu süreçleri otomatikleştirebildiği ve etiketlerin otomatikleştirilebileceği için CI'nin sorumluluğu olmalı, böyle bir araç iş için doğru araçtır.


1

Jenkins gibi CI / CD için DevOps araçlarından birini kullandığınızı düşünüyorum, aşağıdaki yaklaşımı öneriyorum,

Jenkins gibi bir şey kullanırsanız

  • İşinizi, görüntünüze etiketlemek için tetiklendiğinde işin derleme kimliğini alan Jenkins ortam değişkeni "BUILD_ID" 'yi kullanabileceğiniz şekilde yapılandırabilirsiniz. Bu şekilde docker görüntülerinizi kontrol edebilirsiniz. Lütfen aşağıdaki örneği kontrol edin.

örn: - sudo docker build -t <image_name>:<BUILD_ID>

Dolayısıyla, SCM'niz için etiket benzeri bir mekanizmanız varsa, etiketi iş tabanlı derlemelerde veya JENKINS HOME_FOLDER içindeki derleme kimliğinin config.xml dosyasında ilgili derleme kimliğinde kontrol edebilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.