Apa praktik terbaik untuk versi tag buruh pelabuhan?


11

Saya baru-baru ini menghubungkan server CI kami untuk membangun gambar buruh pelabuhan saat git commit.

Kami memiliki sekitar 8 wadah berbeda yang dibangun, masing-masing dengan bahasa / kerangka kerja mereka sendiri. Beberapa node dan memiliki package.json, yang lain adalah layanan python yang tidak mengandung informasi versi semantik.

Pertanyaan saya bukan tentang cara membuat tag, ini tentang membuat nilai untuk tag.

Bagaimana memastikan bahwa setiap tag memiliki nomor versi semantik unik untuk gambar tertentu? Siapa yang seharusnya menjadi otoritas untuk melacak / menambah versi build?


Apa pendekatan Anda saat ini untuk membuat tag?
030

Terdengar untuk melihat apa yang Anda minta. Anda mengatakan "nomor versi semantik", yang harus berdasarkan manusia (AI kami belum cukup maju untuk memutuskan semantik komit dulu ...). Tapi kemudian Anda bertanya tentang "peningkatan versi build". Lalu, apa yang sebenarnya Anda minati? Apakah Anda yang memastikan barang hanya "kenaikan" (seperti SCN / nomor perubahan sistem atau apa pun)? Atau Anda tertarik dengan konten semantik nomor versi (yaitu, apakah ada perubahan yang tidak kompatibel)?
AnoE

Jawaban:


6

Saya akan mengarahkan Anda ke pos saya Coupling docker registry dan sumber kontrol tempat dmaze menjawab dari forum resmi . Docker.com . Cukup dengan hash dan nama cabang atau tag.

Di Dockerfile Anda, gunakan LABEL untuk merekam sumber build. Itu mungkin termasuk hash komit dari kontrol sumber terdistribusi (git, Mercurial), nama cabang jika relevan, tag rilis apa pun jika ada, dan mungkin detail seperti cap waktu komit terakhir. buruh pelabuhan dan memeriksa buruh pelabuhan harus dapat menunjukkan ini.

Ketika Anda buruh pelabuhan mendorong gambar Anda, dorong mereka setidaknya dua kali, dengan hash komit dan dengan nama cabang sebagai bagian "versi" (quay.io/mycorp/imagename:123abc7, quay.io/mycorp/imagename:dmaze-test ). Jika tag rilis sudah tersedia, sistem CI harus mendorong gambar dengan tag ini juga.

Kami saat ini menggunakan kombinasi nama cabang / komit hash. Bagi kami itu tampaknya sudah cukup. cap waktu sementara IMO berguna hanya menambahkan kekacauan karena mereka tidak memberikan apa pun yang hash komit tidak.

Saya setuju dengan 030 tentang:

siapa yang seharusnya menjadi otoritas untuk melacak / menambah versi build

100% adalah tanggung jawab CI untuk mempertahankan hal-hal seperti itu, dengan komunikasi yang baik antara tim lain.


1

Bagaimana memastikan bahwa setiap tag memiliki nomor versi semantik unik untuk gambar tertentu?

Orang dapat membuat tag yang terdiri dari beberapa elemen, misalnya kombinasi timestamp, git commit hash dan versi semantik. Yang terakhir harus diatur secara manual, sedangkan dua yang pertama bisa otomatis. Tag seperti itu dapat terlihat sebagai berikut:

20171015141729-58617f500f7efe236c7ba6a1dfdf37a478b4c878-0.1.4

Tag ini berisi tanggal pembuatan, komit, dan versi semantik. Jika gambar buruh pelabuhan berjalan dalam produksi dan bug ditemukan maka orang tahu versi produk, kode yang ada di dalamnya dan kapan gambar itu dibuat dan dalam keadaan apa.

Siapa yang seharusnya menjadi otoritas untuk melacak / menambah versi build?

Menurut pendapat saya ini harus menjadi tanggung jawab CI karena ini dapat mengotomatiskan proses dan karena pembuatan tag dapat diotomatisasi alat seperti itu adalah alat yang tepat untuk pekerjaan itu.


1

Saya kira Anda menggunakan salah satu alat DevOps untuk CI / CD seperti Jenkins, saya sarankan pendekatan berikut,

Jika Anda menggunakan sesuatu seperti Jenkins-

  • Anda bisa mengonfigurasi pekerjaan Anda sedemikian rupa sehingga Anda bisa menggunakan variabel lingkungan Jenkins "BUILD_ID", yang mengambil id build dari pekerjaan itu ketika dipicu untuk memberi tag ke gambar Anda. Dengan cara ini Anda dapat mengontrol gambar buruh pelabuhan Anda Silakan periksa contoh di bawah ini.

ex:- sudo docker build -t <image_name>:<BUILD_ID>

Jadi, jika Anda memiliki mekanisme seperti tag untuk SCM Anda, Anda dapat memeriksa tag di masing-masing ID build baik di build berbasis pekerjaan atau di config.xml ID build di JENKINS HOME_FOLDER.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.