ตามที่ประกาศไว้ในบล็อกต้นฉบับ post, Bazel เวอร์ชัน 4.0 ขึ้นไปให้การสนับสนุนสำหรับการติดตามการเผยแพร่ 2 แบบ ได้แก่ การเผยแพร่ รุ่นและการสนับสนุนระยะยาว (LTS) หน้านี้จะครอบคลุมข้อมูลล่าสุด ข้อมูลเกี่ยวกับโมเดลการเผยแพร่ของ Bazel
เมทริกซ์การสนับสนุน
รุ่น LTS | ระยะการสนับสนุน | เวอร์ชันล่าสุด | สิ้นสุดการสนับสนุน |
---|---|---|---|
บาเซล 8 | ทบเวลา | ตรวจสอบหน้าการเปิดตัวแบบต่อเนื่อง | ไม่มี |
บาเซล 7 | ใช้งานอยู่ | 7.3.1 | ธ.ค. 2026 |
บาเซล 6 | การบำรุงรักษา | 6.5.0 | ธ.ค. 2025 |
บาเซล 5 | การบำรุงรักษา | 5.4.1 | ม.ค. 2025 |
บาเซล 4 | เลิกใช้ | 4.2.4 | Jan 2024 |
คุณสามารถดูรุ่น Bazel LTS ทั้งหมดได้ในรุ่น ใน GitHub
การกำหนดเวอร์ชันรุ่น
Bazel ใช้ major.minor.patch Semantic การกำหนดเวอร์ชัน
- รุ่นหลักมีฟีเจอร์ที่เข้ากันไม่ได้กับ รุ่นก่อนหน้า เวอร์ชันหลักแต่ละเวอร์ชัน Bazel เป็นรุ่น LTS
- รุ่นย่อยมีการแก้ไขข้อบกพร่องและฟีเจอร์ต่างๆ ที่เข้ากันได้แบบย้อนหลัง มีการส่งกลับมาจาก Branch หลัก
- เวอร์ชันแพตช์มีการแก้ไขข้อบกพร่องร้ายแรง
นอกจากนี้ เวอร์ชันก่อนเผยแพร่จะระบุด้วยการใส่เครื่องหมายขีดกลางและ ต่อท้ายหมายเลขเวอร์ชันหลักถัดไป
เช่น รุ่นใหม่ของแต่ละประเภทจะมีหมายเลขเวอร์ชันดังต่อไปนี้
- หลัก: 6.0.0
- ผู้เยาว์: 6.1.0
- แพตช์: 6.1.2
- รุ่นทดลอง: 7.0.0-pre.20230502.1
ระยะการสนับสนุน
สำหรับ Bazel เวอร์ชันหลักแต่ละเวอร์ชันจะมีการสนับสนุน 4 ขั้นตอน ดังนี้
- เปิดตัวแล้ว: เวอร์ชันหลักนี้ยังอยู่ในรุ่นทดลอง ทีม Bazel เผยแพร่รุ่นต่อเนื่องจาก HEAD
- ใช้งานอยู่: เวอร์ชันหลักนี้เป็นรุ่น LTS ที่ใช้งานอยู่ในปัจจุบัน ต้นบาเซล ทีมจะรองรับฟีเจอร์สำคัญๆ และการแก้ไขข้อบกพร่องในการเปิดตัวย่อย
- การบำรุงรักษา: เวอร์ชันหลักนี้เป็น LTS เวอร์ชันเก่าที่อยู่ระหว่างการบำรุงรักษา ทีม Bazel สัญญาแค่เพียงการแก้ไขข้อบกพร่องที่สำคัญของ ปัญหาด้านความปลอดภัยและปัญหาด้านความเข้ากันได้กับระบบปฏิบัติการใน LTS รุ่นนี้
- เลิกใช้งาน: ทีม Bazel ไม่ได้ให้การสนับสนุนสำหรับผู้เผยแพร่โฆษณาหลักนี้อีกต่อไป ผู้ใช้ทุกคนควรย้ายข้อมูลไปยัง Bazel LTS รุ่นใหม่
ช่วงเวลาการเปิดตัว
Bazel เผยแพร่รุ่นสำหรับแทร็กการเผยแพร่ 2 แทร็กเป็นประจำ
การเปิดตัวทีละน้อย
- การเปิดตัวทีละรอบเป็นการประสานงานกับการเปิดตัว Google Blaze และได้รับการเผยแพร่แล้ว จาก HEAD ทุก 2 สัปดาห์ นี่คือตัวอย่างของ Bazel LTS รุ่นถัดไป
- การเปิดตัวแบบค่อยเป็นค่อยไปสามารถจัดส่งการเปลี่ยนแปลงที่เข้ากันไม่ได้ Flag ที่ใช้ร่วมกันไม่ได้มีดังนี้ แนะนำสำหรับการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบที่สำคัญ การเปิดตัวการเปลี่ยนแปลงที่เข้ากันไม่ได้ ควรเป็นไปตามความเข้ากันได้แบบย้อนหลัง
รุ่น LTS
- รุ่นหลัก: คาดว่ารุ่น LTS ใหม่จะถูกตัดจากช่วง HEAD โดยประมาณ ทุก 12 เดือน เมื่อรุ่น LTS ใหม่เปิดตัว จะเข้าสู่สถานะ "ใช้งานอยู่" ทันที และ LTS รุ่นก่อนหน้าจะเข้าสู่ขั้นตอนการบำรุงรักษา
- การเปิดตัวย่อย: คาดว่าเวอร์ชันใหม่ย่อยในแทร็ก LTS ที่ใช้งานอยู่ เผยแพร่ 1 ครั้งทุก 2 เดือน
- เผยแพร่แพตช์: เวอร์ชันแพตช์ใหม่สำหรับรุ่น LTS ในสถานะใช้งานอยู่และ คาดว่าจะมีการเผยแพร่ขั้นตอนการบำรุงรักษาตามข้อบกพร่องที่สำคัญ
- รุ่น Bazel LTS เข้าสู่ระยะการเลิกใช้งานหลังจากอยู่ใน ระยะการบำรุงรักษาเป็นเวลา 2 ปี
สำหรับการเผยแพร่ที่วางแผนไว้ โปรดดูที่การเผยแพร่ ปัญหา ใน GitHub
กระบวนการเผยแพร่และ นโยบาย
สำหรับการเปิดตัวทีละขั้น กระบวนการไม่ซับซ้อน คือประมาณทุกๆ 2 สัปดาห์ ระบบจะสร้างรุ่นใหม่ขึ้น เพื่อให้สอดคล้องกับเกณฑ์พื้นฐานเดียวกันกับเวอร์ชันภายในของ Google ปล่อย Blaze เนื่องจากกำหนดการเผยแพร่ที่รวดเร็ว เราจึงไม่ได้เปลี่ยนกลับการเปลี่ยนแปลงใดๆ ไปจนถึงการเปิดตัวทีละน้อย
สำหรับรุ่น LTS ให้ทำตามขั้นตอนและนโยบายด้านล่างนี้
- กำหนดสัญญาผูกมัดพื้นฐานสำหรับการเผยแพร่
- สำหรับรุ่น LTS รุ่นหลักรายการใหม่ ค่าคอมมิตพื้นฐานคือ HEAD ของ Branch
- สำหรับรุ่นย่อยหรือแพตช์ การคอมมิตพื้นฐานคือส่วนหัวของ เวอร์ชันล่าสุดในปัจจุบันของรุ่น LTS รุ่นเดียวกัน
- สร้าง Branch ของรุ่นในชื่อ
release-<version>
จากเกณฑ์พื้นฐาน คอมมิต - การเปลี่ยนแปลง Backport ผ่าน PR ไปยัง Branch ของรุ่น
- ชุมชนสามารถแนะนำสัญญาผูกมัดบางอย่างที่จะถูกย้ายกลับมาได้โดยการตอบกลับ
"
@bazel-io flag
" ปัญหา GitHub หรือ PR ที่เกี่ยวข้องเพื่อทำเครื่องหมายว่ามีโอกาส ของบล็อกการเผยแพร่ ทีมงาน Bazel จะคัดแยกสิ่งเหล่านี้และตัดสินใจว่าจะ โอนคอมมิตอีกครั้ง - เฉพาะคอมมิตที่เข้ากันได้แบบย้อนหลังใน Branch หลักเท่านั้นที่สามารถโอนย้อนกลับได้ ยอมรับการเปลี่ยนแปลงเล็กน้อยเพิ่มเติมเพื่อแก้ไขความขัดแย้งของการรวม
- ชุมชนสามารถแนะนำสัญญาผูกมัดบางอย่างที่จะถูกย้ายกลับมาได้โดยการตอบกลับ
"
การเปลี่ยนพอร์ตที่ใช้ปัญหาคำขอ Cherry-Select สำหรับผู้ดูแล Bazel
ผู้ดูแล Bazel สามารถขอเลือกคอมมิตที่เจาะจงได้ กับ Branch ของรุ่น ขั้นตอนนี้เริ่มต้นโดยสร้าง คำขอ cherry-pick ใน GitHub มาดูวิธีกัน
- เปิดคำขอเลือก Cherry
- กรอกรายละเอียดคำขอ
- ชื่อ: ระบุชื่อที่กระชับและสื่อความหมายในคำขอ
- รหัสคอมมิต: ป้อนรหัสของคอมมิตที่คุณต้องการ สิ่งที่เลือก หากมีสัญญาผูกมัดหลายรายการ ให้แยก โดยใช้เครื่องหมายจุลภาค
- หมวดหมู่: ระบุหมวดหมู่ของคำขอ
- ผู้รีวิว: สำหรับผู้ตรวจสอบหลายคน ให้แยก GitHub กับเครื่องหมายคอมมา
- ตั้งเป้าหมาย
- ค้นหา "เป้าหมาย" และคลิกการตั้งค่า
- เลือกตัวบล็อกการเผยแพร่ X.Y.Z ที่เหมาะสม การดำเนินการนี้ เรียกใช้บ็อต cherry-pick ให้ดำเนินการตามคำขอของคุณ สำหรับ "release-X.Y.Z" Branch
- ส่งปัญหา
- เมื่อกรอกรายละเอียดทั้งหมดและกำหนดเหตุการณ์สำคัญแล้ว ส่งปัญหา
บ็อต cherry-pick จะดำเนินการตามคำขอและแจ้งเตือน หากการกระทำนั้นมีสิทธิ์ดึงข้อมูล ถ้า คอมมิตนี้สามารถเลือกได้ ซึ่งหมายความว่าไม่มี ผสานข้อขัดแย้งขณะเลือกคอมมิต บ็อตจะสร้างการดึงคำขอใหม่ เมื่อพุล คำขอได้รับการอนุมัติโดยสมาชิกของทีม Bazel ระบบจะเลือกคอมมิตและรวมเข้ากับ Branch ของรุ่น สำหรับภาพตัวอย่าง ของคำขอเลือกรายการที่เสร็จสมบูรณ์ อ้างอิงอันนี้ ตัวอย่าง ที่ใช้เวลาเพียง 2 นาที
ระบุตัวบล็อกการเผยแพร่และแก้ไขปัญหาที่พบใน Branch ของรุ่น
- Branch ของรุ่นจะได้รับการทดสอบด้วยชุดทดสอบเดียวกันใน postsubmit และ ไปป์ไลน์การทดสอบดาวน์สตรีม ใน Bazel CI ทีม Bazel ติดตามผลการทดสอบของรุ่น Branch และแก้ไขการถดถอยที่พบ
สร้างผู้สมัครรุ่นใหม่จากฝ่ายรุ่นเมื่อทราบทั้งหมดแล้ว ระบบจะแก้ไขปัญหาที่ตัวบล็อกการเผยแพร่
- จะประกาศผู้ชนะวันที่ bazel-discuss ทีม Bazel จะตรวจสอบรายงานข้อบกพร่องของชุมชนของผู้สมัคร
- หากตรวจพบตัวบล็อกการเผยแพร่ใหม่ ให้กลับไปที่ขั้นตอนสุดท้ายและ สร้างผู้สมัครรายใหม่หลังจากแก้ไขปัญหาทั้งหมดเรียบร้อยแล้ว
- ไม่อนุญาตให้เพิ่มฟีเจอร์ใหม่ใน Branch ของรุ่นหลังจาก สร้างผู้สมัครรุ่นแรกแล้ว จำนวนจุดเชอร์รี่ที่จำกัดไว้นั้นจำกัดไว้เฉพาะจุดวิกฤต เท่านั้น หากจำเป็นต้องเลือกข้อความ ผู้ส่งคำขอจะต้องตอบคำถาม คำถามต่อไปนี้: ทำไมการเปลี่ยนแปลงนี้จึงสำคัญ และประโยชน์ที่ได้รับ ที่มี แนวโน้มที่การเปลี่ยนแปลงนี้จะเริ่มใช้ การถดถอย?
พุชผู้สมัครรับเลือกตั้งเป็นผลงานอย่างเป็นทางการหากไม่มีการเปิดตัวเพิ่มเติม พบตัวบล็อก
- สำหรับการเผยแพร่แพตช์ ให้พุชรุ่นหลังจากผ่านไปอย่างน้อย 2 วันทำการ ผู้สมัครคนสุดท้ายว่างอยู่
- สำหรับการเผยแพร่ที่สำคัญและรุ่นย่อย ให้พุชการเผยแพร่หลังจาก 2 วันทำการ ผู้สมัครเป็นรายล่าสุดออกเผยแพร่แล้ว แต่ไม่เกิน 1 สัปดาห์หลังจากนั้น ผู้สมัครคนแรกออกเผยแพร่แล้ว
- การเปิดตัวจะทำงานในวันที่เป็นธุรกิจในวันถัดไปเท่านั้น วัน
- จะประกาศการเปิดตัวในวันที่ bazel-discuss ทีมงาน Bazel ติดตามและจัดการกับรายงานข้อบกพร่องของชุมชนสำหรับ
รายงานการเกิดปัญหาซ้ำ
หากผู้ใช้พบการถดถอยในรุ่นใหม่ของ Bazel, ผู้สมัครรับเลือกตั้ง หรือแม้กระทั่ง Bazel ที่ HEAD โปรดรายงานข้อบกพร่องใน GitHub คุณสามารถใช้ Bazelisk เพื่อคัดแยกผู้ก่อเหตุออกและใส่ข้อมูลนี้ไว้ในข้อบกพร่อง รายงาน
ตัวอย่างเช่น หากบิลด์ของคุณสำเร็จด้วย Bazel 6.1.0 แต่ล้มเหลวด้วย รุ่น 6.2.0 คุณสามารถเลือกที่จะแยก
bazelisk --bisect=6.1.0..release-6.2.0rc2 build //foo:bar
คุณตั้งค่าให้เรียกใช้ตัวแปรสภาพแวดล้อม BAZELISK_SHUTDOWN
หรือ BAZELISK_CLEAN
ได้
คำสั่ง Bazel ที่เกี่ยวข้องเพื่อรีเซ็ตสถานะของบิลด์หากจำเป็น
ทำให้ปัญหาเกิดซ้ำ ดูรายละเอียดเพิ่มเติมได้ในเอกสารเกี่ยวกับ Bazelisk
Bisect
อย่าลืมอัปเกรด Bazelisk เป็นเวอร์ชันล่าสุดเพื่อใช้ Bisect
ความเข้ากันได้ของกฎ
หากคุณเป็นผู้เขียนกฎและต้องการรักษาความเข้ากันได้กับกฎ เวอร์ชัน Bazel โปรดดูที่กฎ ความเข้ากันได้