แนวทางปฏิบัติที่ดีที่สุดสำหรับการกำหนดเวอร์ชันของแท็กเกอร์คืออะไร


11

ฉันเพิ่งติดเซิร์ฟเวอร์ CI ของเราเพื่อสร้างภาพนักเทียบท่าเมื่อคอมไพล์ยอมรับ

เรามีตู้สินค้าประมาณ 8 ตู้ที่สร้างขึ้นแต่ละตู้มีภาษา / กรอบงานของตนเอง บางโหนดและมี package.json ส่วนอื่น ๆ เป็นบริการ python ที่ไม่มีข้อมูลเกี่ยวกับ semantic version

คำถามของฉันไม่เกี่ยวกับวิธีสร้างแท็ก แต่เกี่ยวกับการสร้างค่าสำหรับแท็ก

วิธีการตรวจสอบให้แน่ใจว่าแต่ละแท็กมีหมายเลขรุ่นความหมายเฉพาะสำหรับภาพเฉพาะ ใครควรเป็นผู้มีอำนาจในการติดตาม / เพิ่มรุ่นบิลด์?


คุณมีแนวทางในการสร้างแท็กอย่างไร
030

จะได้ยินเพื่อดูสิ่งที่คุณถาม คุณพูดว่า "semantic version number" ซึ่งจะต้องเป็นมนุษย์ asigned (AIs ของเรายังไม่ก้าวหน้าพอที่จะตัดสินความหมายของการกระทำที่ยัง ... แต่คุณถามเกี่ยวกับ "การเพิ่มรุ่นบิลด์" แล้วคุณสนใจอะไรจริงๆ คุณต้องการให้แน่ใจว่าสิ่งของแค่ "เพิ่มขึ้น" (เช่นหมายเลขเปลี่ยน SCN / ระบบหรืออะไรก็ตาม)? หรือคุณสนใจเนื้อหาความหมายของหมายเลขเวอร์ชั่น (เช่นมีการเปลี่ยนแปลงที่เข้ากันไม่ได้) หรือไม่
AnoE

คำตอบ:


6

ฉันจะนำคุณไปยังโพสต์ของฉันรีจิสทรีนักเทียบท่าและแหล่งที่มาควบคุมการเชื่อมต่อที่ dmaze ตอบอย่างเป็นทางการจากforums.docker.com ยอมรับแฮชและชื่อสาขาหรือแท็กพอเพียง

ใน Dockerfile ของคุณใช้ LABEL เพื่อบันทึกแหล่งที่มาของบิลด์ ซึ่งอาจรวมถึงแฮชการคอมมิชชันจากการควบคุมแหล่งที่มาแบบกระจาย (git, Mercurial), ชื่อสาขาถ้าเกี่ยวข้อง, แท็กปล่อยใด ๆ ถ้ามีและรายละเอียดที่เป็นไปได้เช่นเวลาประทับของการส่งครั้งล่าสุด ประวัตินักเทียบท่าและการตรวจสอบนักเทียบท่าควรจะสามารถแสดงสิ่งเหล่านี้ได้

เมื่อคุณเทียบท่าดันภาพของคุณดันอย่างน้อยสองครั้งด้วยแฮชคอมมิทและชื่อสาขาเป็นส่วน "เวอร์ชั่น" (quay.io/mycorp/imagename:123abc7, quay.io/mycorp/imagename:dmaze-test ) หากแท็กปล่อยพร้อมใช้งานระบบ CI ควรผลักภาพด้วยแท็กเหล่านี้ด้วย

ขณะนี้เรากำลังใช้การรวมกันของชื่อสาขา / กระทำแฮช สำหรับเราที่ดูเหมือนจะเพียงพอ การประทับเวลาในขณะที่มีประโยชน์ IMO เพียงเพิ่มความยุ่งเหยิงเนื่องจากไม่มีการแฮชการกระทำ

ฉันเห็นด้วยกับ030เกี่ยวกับ:

ใครควรเป็นผู้มีสิทธิ์ในการติดตาม / เพิ่มรุ่นบิลด์

100% เป็นความรับผิดชอบของ CI ในการรักษาสิ่งต่าง ๆ ด้วยการสื่อสารที่เหมาะสมระหว่างทีมอื่น ๆ


1

วิธีการตรวจสอบให้แน่ใจว่าแต่ละแท็กมีหมายเลขรุ่นความหมายเฉพาะสำหรับภาพเฉพาะ

หนึ่งสามารถสร้างแท็กที่ประกอบด้วยองค์ประกอบหลายอย่างเช่นการรวมกันของการประทับเวลา, คอมไพล์กระทำแฮชและรุ่นความหมาย หลังจะต้องตั้งค่าด้วยตนเองในขณะที่สองคนแรกอาจเป็นไปโดยอัตโนมัติ แท็กดังกล่าวอาจมีลักษณะดังนี้:

20171015141729-58617f500f7efe236c7ba6a1dfdf37a478b4c878-0.1.4

แท็กนี้มีวันที่สร้างรุ่นกระทำและรุ่นความหมาย หากภาพนักเทียบท่าทำงานในการผลิตและพบข้อบกพร่องแล้วหนึ่งรู้ถึงรุ่นของผลิตภัณฑ์รหัสที่อยู่ภายในและเมื่อภาพที่ถูกสร้างขึ้นและภายใต้สถานการณ์ใด

ใครควรเป็นผู้มีอำนาจในการติดตาม / เพิ่มรุ่นบิลด์?

ในความเห็นของฉันนี่ควรเป็นความรับผิดชอบของ CI เพราะนี่เป็นกระบวนการอัตโนมัติและการสร้างแท็กอาจเป็นไปโดยอัตโนมัติเครื่องมือนี้เป็นเครื่องมือที่เหมาะสมสำหรับงาน


1

ฉันคิดว่าคุณใช้หนึ่งในเครื่องมือ DevOps สำหรับ CI / CD เช่น Jenkins ฉันแนะนำวิธีต่อไปนี้

ถ้าคุณใช้บางอย่างเช่นเจนกินส์ -

  • คุณสามารถกำหนดค่างานของคุณในแบบที่คุณสามารถใช้ตัวแปรสภาพแวดล้อม Jenkins "BUILD_ID" ซึ่งดึงข้อมูลบิลด์บิวด์ของงานเมื่อถูกเรียกให้แท็กรูปภาพของคุณ วิธีนี้คุณสามารถควบคุมภาพรุ่นนักเทียบท่าของคุณได้ โปรดตรวจสอบตัวอย่างด้านล่าง

เช่น: - sudo docker build -t <image_name>:<BUILD_ID>

ดังนั้นถ้าคุณมีแท็กเช่นกลไกสำหรับ SCM ของคุณคุณสามารถตรวจสอบแท็กในบิลด์ที่เกี่ยวข้องทั้งในบิลด์เบสตามงานหรือใน config.xml ของบิลด์ ID ใน JENKINS HOME_FOLDER

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.