ตามที่ได้ประกาศในบล็อกโพสต์ต้นฉบับ Bazel 4.0 ขึ้นไปจะรองรับแทร็กการเผยแพร่ 2 แทร็ก ได้แก่ การเผยแพร่ต่อเนื่องและรุ่นการสนับสนุนระยะยาว (LTS) หน้านี้จะมีข้อมูลล่าสุด เกี่ยวกับรูปแบบการเผยแพร่ของ Bazel
การกำหนดเวอร์ชันที่เผยแพร่
Bazel ใช้รูปแบบ major.minor.patch Semantic Versioning
- รุ่นหลักมีฟีเจอร์ที่เข้ากันไม่ได้แบบย้อนหลังกับรุ่นก่อนหน้า Bazel เวอร์ชันหลักแต่ละเวอร์ชันคือ LTS
- รุ่นย่อยมีการแก้ไขข้อบกพร่องที่เข้ากันได้แบบย้อนหลังและฟีเจอร์ที่มีการพอร์ตกลับจากสาขาหลัก
- รุ่นที่แพตช์มีการแก้ไขข้อบกพร่องที่ร้ายแรง
นอกจากนี้ เวอร์ชันก่อนเปิดตัวจะระบุโดยใส่เครื่องหมายขีดกลางและคำต่อท้ายวันที่ต่อท้ายหมายเลขเวอร์ชันหลักถัดไป
เช่น การเปิดตัวเวอร์ชันใหม่แต่ละประเภทจะมีหมายเลขเวอร์ชันดังต่อไปนี้
- หลัก: 6.0.0
- ย่อย: 6.1.0
- แพตช์: 6.1.2
- ก่อนเปิดตัว: 7.0.0-pre.20230502.1
ขั้นตอนการสนับสนุน
สำหรับ Bazel เวอร์ชันหลักแต่ละเวอร์ชันจะมีขั้นตอนการสนับสนุน 4 ขั้นตอน ดังนี้
- Rolling: เวอร์ชันหลักนี้ยังคงเป็นรุ่นก่อนเปิดตัว ทีม Bazel ได้เผยแพร่รุ่นต่างๆ จาก HEAD
- ใช้งานอยู่: เวอร์ชันหลักนี้เป็นรุ่น LTS ที่ใช้งานอยู่ในปัจจุบัน ทีม Bazel จะ ย้อนกลับสู่คุณลักษณะสำคัญและแก้ไขข้อบกพร่องในการเปิดตัวย่อย
- การบำรุงรักษา: เวอร์ชันหลักนี้เป็น LTS เวอร์ชันเก่าในโหมดการบำรุงรักษา ทีม Bazel ขอสัญญาว่าจะแบกรับการแก้ไขข้อบกพร่องที่สำคัญสำหรับปัญหาด้านความปลอดภัยและความเข้ากันได้กับระบบปฏิบัติการมาไว้ในรุ่น LTS นี้เท่านั้น
- เลิกใช้งานแล้ว: ทีม Bazel ไม่รองรับเวอร์ชันหลักนี้อีกต่อไป ผู้ใช้ทุกคนควรย้ายข้อมูลไปยัง Bazel LTS รุ่นใหม่
จังหวะการเผยแพร่
Bazel เผยแพร่แทร็กที่เผยแพร่ 2 แทร็กเป็นประจำ
การเปิดตัวทีละเวอร์ชัน
- การเปิดตัวทีละรุ่นจะประสานงานกับรุ่น Google Blaze และจะเปิดตัวตั้งแต่ HEAD ทุก 2 สัปดาห์ โดยเป็นตัวอย่างของ Bazel LTS รุ่นใหม่
- การเปิดตัวทีละรุ่นอาจส่งการเปลี่ยนแปลงที่ใช้ร่วมกันไม่ได้ เราขอแนะนำให้ใช้แฟล็กที่ใช้ร่วมกันไม่ได้สำหรับการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ การเปิดตัวการเปลี่ยนแปลงที่ใช้ร่วมกันไม่ได้ควรเป็นไปตามนโยบายความเข้ากันได้แบบย้อนหลัง
รุ่น LTS
- รุ่นหลัก: LTS รุ่นใหม่จะถูกตัดออกจาก HEAD ประมาณทุก 12 เดือน เมื่อ LTS รุ่นใหม่เปิดตัวแล้ว LTS ดังกล่าวจะเข้าสู่ขั้นตอน "ที่ใช้งานอยู่" ทันที และ LTS รุ่นก่อนหน้าจะเข้าสู่ขั้นตอนการบำรุงรักษา
- รุ่นย่อย: จะมีการเผยแพร่เวอร์ชันย่อยใหม่ในแทร็ก Active LTS ทุกๆ 2 เดือน
- การเผยแพร่แพตช์: แพตช์เวอร์ชันใหม่สำหรับรุ่น LTS ในขั้นตอน "ใช้งานอยู่" และ "การบำรุงรักษา" คาดว่าจะเผยแพร่ตามคำขอสำหรับการแก้ไขข้อบกพร่องที่สำคัญ
- รุ่น Bazel LTS จะเข้าสู่ขั้นการเลิกใช้งานหลังจากอยู่ในขั้นตอนการบำรุงรักษาเป็นเวลา 2 ปี
สำหรับรุ่นที่วางแผนไว้ โปรดตรวจสอบปัญหาเกี่ยวกับการเผยแพร่ใน GitHub
เมทริกซ์การสนับสนุน
รุ่น LTS | ขั้นตอนการสนับสนุน | เวอร์ชันล่าสุด | สิ้นสุดการสนับสนุน |
---|---|---|---|
Bazel 7 | ทบเวลา | ดูหน้ารุ่นของ GitHub | ไม่มี |
Bazel 6 | ใช้งานอยู่ | 6.4.0 | ธ.ค. 2025 |
Bazel 5 | การบำรุงรักษา | 5.4.1 | ม.ค. 2025 |
บาเซล 4 | การบำรุงรักษา | 4.2.4 | ม.ค. 2024 |
ดูรุ่นทั้งหมดของ Bazel ได้ที่หน้าการเปิดตัวบน GitHub
ขั้นตอนการเผยแพร่และนโยบาย
สำหรับการเปิดตัวทีละรุ่น ขั้นตอนนั้นไม่ซับซ้อนเลย โดยจะมีการสร้างรุ่นใหม่ประมาณทุกๆ 2 สัปดาห์ ซึ่งสอดคล้องกับเกณฑ์พื้นฐานเดียวกันกับการเปิดตัวภายใน Blaze ของ Google เนื่องจากกำหนดการเผยแพร่อย่างรวดเร็วแล้ว เราจึงไม่ได้บังคับให้มีการเปลี่ยนแปลงใดๆ ในการทยอยเปิดตัว
สำหรับรุ่น LTS ระบบจะปฏิบัติตามขั้นตอนและนโยบายด้านล่าง
- กำหนดคอมมิตพื้นฐานสำหรับการเผยแพร่
- สำหรับ LTS รุ่นหลักใหม่ คอมมิตพื้นฐานคือ HEAD ของสาขาหลัก
- สำหรับรุ่นย่อยหรือแพตช์ คอมมิตพื้นฐานคือ HEAD ในเวอร์ชันล่าสุดปัจจุบันของ LTS รุ่นเดียวกันนั้น
- สร้าง Branch ของรุ่นในชื่อ
release-<version>
จากคอมมิตพื้นฐาน - การเปลี่ยน Backport ผ่าน PR ไปยัง Branch
- ชุมชนสามารถแนะนำการคอมมิตบางอย่างเพื่อทำการย้อนกลับได้โดยตอบกลับว่า "
@bazel-io flag
" ในประเด็นหรือ PR ที่เกี่ยวข้องของ GitHub เพื่อทำเครื่องหมายว่าอาจเป็นตัวบล็อกการเผยแพร่ ทีม Bazel จะคัดตัวและตัดสินใจว่าจะส่งการยืนยันหรือไม่ - เฉพาะคอมมิตที่เข้ากันได้แบบย้อนหลังใน Branch หลักเท่านั้นที่สามารถนำมาพอร์ตกลับได้ โดยเรายอมรับการเปลี่ยนแปลงเล็กน้อยเพิ่มเติมเพื่อแก้ไขความขัดแย้งในการรวม
- ชุมชนสามารถแนะนำการคอมมิตบางอย่างเพื่อทำการย้อนกลับได้โดยตอบกลับว่า "
- ระบุตัวบล็อกรุ่นและแก้ไขปัญหาที่พบใน 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
ให้เรียกใช้คำสั่งเบเซลที่เกี่ยวข้องเพื่อรีเซ็ตสถานะของบิลด์หากจําเป็นต้องจำลองปัญหา ดูรายละเอียดเพิ่มเติมได้ในเอกสารประกอบเกี่ยวกับลักษณะของบิกของ Bazelisk
อย่าลืมอัปเกรด Bazelisk เป็นเวอร์ชันล่าสุดเพื่อใช้ฟีเจอร์ Bisect
ความเข้ากันได้ของกฎ
หากคุณเป็นผู้เขียนกฎและต้องการคงความเข้ากันได้กับเวอร์ชันต่างๆ ของ Bazel ไว้ โปรดไปที่หน้าความเข้ากันได้ของกฎ