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