ตามที่ได้ประกาศไว้ในบล็อกโพสต์ต้นฉบับ Bazel เวอร์ชัน 4.0 ขึ้นไปรองรับการเผยแพร่ 2 รูปแบบ ได้แก่ การเผยแพร่แบบต่อเนื่อง และการเผยแพร่แบบการสนับสนุนระยะยาว (LTS) หน้านี้ครอบคลุมข้อมูลล่าสุดเกี่ยวกับโมเดลการเผยแพร่ของ Bazel
เมทริกซ์การสนับสนุน
รุ่น LTS | ขั้นตอนการสนับสนุน | เวอร์ชันล่าสุด | สิ้นสุดการสนับสนุน |
---|---|---|---|
Bazel 9 | ทบเวลา | ดูหน้าการเปิดตัวแบบต่อเนื่อง | ไม่มี |
Bazel 8 | ใช้งานอยู่ | 8.3.0 | ธันวาคม 2027 |
Bazel 7 | การบำรุงรักษา | 7.6.1 | ธ.ค. 2026 |
Bazel 6 | การบำรุงรักษา | 6.5.0 | ธ.ค. 2025 |
Bazel 5 | เลิกใช้ | 5.4.1 | ม.ค. 2025 |
Bazel 4 | เลิกใช้ | 4.2.4 | Jan 2024 |
คุณดู Bazel LTS ทุกรุ่นได้ในหน้าการเผยแพร่ใน GitHub
การกำหนดเวอร์ชันการเผยแพร่
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 เผยแพร่รุ่น Rolling จาก HEAD
- ใช้งานอยู่: เวอร์ชันหลักนี้คือรุ่น LTS ที่ใช้งานอยู่ปัจจุบัน ทีม Bazel จะพอร์ตฟีเจอร์สำคัญและการแก้ไขข้อบกพร่องกลับไปยังรุ่นย่อย
- การบำรุงรักษา: เวอร์ชันหลักนี้เป็นรุ่น LTS เก่าที่อยู่ระหว่างการบำรุงรักษา ทีม Bazel รับประกันว่าจะพอร์ตการแก้ไขข้อบกพร่องที่สำคัญสำหรับปัญหาด้านความปลอดภัยและปัญหาความเข้ากันได้ของระบบปฏิบัติการไปยังรุ่น LTS นี้เท่านั้น
- เลิกใช้งานแล้ว: ทีม Bazel ไม่รองรับเวอร์ชันหลักนี้อีกต่อไป ผู้ใช้ทั้งหมดควรย้ายข้อมูลไปยังรุ่น LTS ของ Bazel ที่ใหม่กว่า
ความถี่ในการเผยแพร่
Bazel เผยแพร่รุ่นต่างๆ สำหรับการติดตามการเผยแพร่ 2 รายการเป็นประจำ
การเปิดตัวแบบต่อเนื่อง
- การเผยแพร่แบบต่อเนื่องจะประสานงานกับการเผยแพร่ Google Blaze และจะเผยแพร่จาก HEAD ทุกๆ 2 สัปดาห์โดยประมาณ ซึ่งเป็นตัวอย่างของรุ่น Bazel LTS รุ่นถัดไป
- การเปิดตัวแบบต่อเนื่องอาจทำให้มีการเปลี่ยนแปลงที่ไม่เข้ากัน เราขอแนะนำให้ใช้ Flag ที่เข้ากันไม่ได้สำหรับการเปลี่ยนแปลงที่สำคัญซึ่งทำให้เกิดการหยุดทำงาน การเปิดตัวการเปลี่ยนแปลงที่เข้ากันไม่ได้ควรเป็นไปตามนโยบายความเข้ากันได้แบบย้อนหลัง
รุ่น LTS
- รุ่นหลัก: คาดว่าจะมีการตัดรุ่น LTS ใหม่จาก HEAD ทุกๆ 12 เดือนโดยประมาณ เมื่อมีการเผยแพร่ LTS เวอร์ชันใหม่ เวอร์ชันดังกล่าวจะเข้าสู่ระยะใช้งานทันที และ LTS เวอร์ชันก่อนหน้าจะเข้าสู่ระยะการบำรุงรักษา
- รุ่นย่อย: คาดว่ารุ่นย่อยใหม่ในแทร็ก LTS ที่ใช้งานอยู่จะเปิดตัวทุกๆ 2 เดือน
- การเปิดตัวแพตช์: คาดว่าจะมีการเปิดตัวเวอร์ชันแพตช์ใหม่สำหรับการเปิดตัว LTS ในขั้นตอนที่ใช้งานอยู่และขั้นตอนการบำรุงรักษาตามคำขอสำหรับการแก้ไขข้อบกพร่องที่สำคัญ
- การเผยแพร่ LTS ของ Bazel จะเข้าสู่ระยะที่เลิกใช้งานแล้วหลังจากอยู่ในระยะการบำรุงรักษาเป็นเวลา 2 ปี
สำหรับรุ่นที่วางแผนไว้ โปรดดูปัญหาเกี่ยวกับรุ่น ใน Github
ขั้นตอนและนโยบายการเผยแพร่
สำหรับการเผยแพร่แบบต่อเนื่อง กระบวนการจะตรงไปตรงมา โดยจะมีการสร้างรุ่นใหม่ทุกๆ 2 สัปดาห์ ซึ่งสอดคล้องกับพื้นฐานเดียวกันกับการเผยแพร่ Blaze ภายในของ Google เนื่องจากกำหนดการเผยแพร่ที่รวดเร็ว เราจึงไม่ย้อนกลับการเปลี่ยนแปลงใดๆ ในการเผยแพร่แบบต่อเนื่อง
สำหรับรุ่น LTS เราจะทำตามขั้นตอนและนโยบายด้านล่าง
- กำหนดการคอมมิตพื้นฐานสำหรับการเผยแพร่
- สำหรับการเปิดตัว LTS เวอร์ชันหลักใหม่ คอมมิตพื้นฐานคือ HEAD ของสาขาหลัก
- สำหรับการเผยแพร่รุ่นย่อยหรือแพตช์ คอมมิตพื้นฐานคือ HEAD ของ เวอร์ชัน LTS เดียวกันที่ล่าสุดในปัจจุบัน
- สร้างกิ่งรุ่นในชื่อ
release-<version>
จากการเปลี่ยนแปลงพื้นฐาน - ย้อนกลับการเปลี่ยนแปลงผ่าน PR ไปยังกิ่งของการเผยแพร่
- ชุมชนสามารถแนะนำคอมมิตบางรายการให้มีการย้อนพอร์ตได้โดยการตอบกลับ
"
@bazel-io flag
" ในปัญหาหรือ PR ที่เกี่ยวข้องบน GitHub เพื่อทำเครื่องหมายว่าอาจเป็น ข้อจำกัดในการเผยแพร่ จากนั้นทีม Bazel จะจัดลำดับความสำคัญและตัดสินใจว่าจะ ย้อนพอร์ตคอมมิตหรือไม่ - เฉพาะการคอมมิตที่เข้ากันได้แบบย้อนหลังในกิ่งหลักเท่านั้นที่สามารถย้อนกลับได้ การเปลี่ยนแปลงเล็กๆ น้อยๆ เพิ่มเติมเพื่อแก้ไขข้อขัดแย้งในการผสานเป็นสิ่งที่ยอมรับได้
- ชุมชนสามารถแนะนำคอมมิตบางรายการให้มีการย้อนพอร์ตได้โดยการตอบกลับ
"
ส่งการเปลี่ยนแปลงย้อนหลังโดยใช้ปัญหาคำขอ Cherry-Pick สำหรับผู้ดูแล Bazel
ผู้ดูแล Bazel สามารถขอ Cherry-Pick คอมมิตที่เฉพาะเจาะจงไปยังกิ่งของการเผยแพร่ได้ กระบวนการนี้เริ่มต้นด้วยการสร้าง คำขอ Cherry-Pick ใน GitHub โดยทำดังนี้
- เปิดคำขอ Cherry-Pick
- กรอกรายละเอียดคำขอ
- ชื่อ: ระบุชื่อที่กระชับและสื่อความหมายสำหรับคำขอ
- รหัสการคอมมิต: ป้อนรหัสของการคอมมิตที่ต้องการ เชอร์รี่พิก หากมีหลายคอมมิต ให้คั่นด้วยคอมมา
- หมวดหมู่: ระบุหมวดหมู่ของคำขอ
- ผู้ตรวจสอบ: หากมีผู้ตรวจสอบหลายคน ให้คั่นรหัส GitHub ของผู้ตรวจสอบแต่ละคนด้วยคอมมา
- กำหนดเป้าหมาย
- ค้นหาส่วน "เหตุการณ์สำคัญ" แล้วคลิกการตั้งค่า
- เลือกตัวบล็อกการเปิดตัว X.Y.Z ที่เหมาะสม การดำเนินการนี้ จะทริกเกอร์บ็อต Cherry-Pick ให้ประมวลผลคำขอของคุณ สำหรับสาขา "release-X.Y.Z"
- ส่งปัญหา
- เมื่อกรอกรายละเอียดทั้งหมดและตั้งค่าเหตุการณ์สำคัญแล้ว ให้ส่งปัญหา
บ็อต Cherry-pick จะประมวลผลคำขอและแจ้งให้ทราบ หากคอมมิตมีสิทธิ์สำหรับ Cherry-pick หาก คอมมิตสามารถเลือกเชอร์รีได้ ซึ่งหมายความว่าไม่มี ข้อขัดแย้งในการผสานขณะเลือกเชอร์รีคอมมิต บ็อตจะสร้างคำขอพุลใหม่ เมื่อสมาชิกในทีม Bazel อนุมัติคำขอ ดึงข้อมูลแล้ว ระบบจะเลือกคอมมิตและผสานรวมกับกิ่งการเผยแพร่ ดูตัวอย่างภาพของคำขอ Cherry-Pick ที่เสร็จสมบูรณ์ได้ ที่ตัวอย่าง นี้
ระบุสิ่งที่บล็อกการเผยแพร่และแก้ไขปัญหาที่พบในสาขาการเผยแพร่
- เราทดสอบสาขาที่เผยแพร่ด้วยชุดทดสอบเดียวกันใน หลังการส่งและ ไปป์ไลน์การทดสอบดาวน์สตรีม ใน Bazel CI ทีม Bazel จะตรวจสอบผลการทดสอบของสาขา รุ่นและแก้ไขการเกิดปัญหาซ้ำที่พบ
สร้างรุ่นที่พร้อมเผยแพร่ใหม่จากสาขาการเผยแพร่เมื่อมีการแก้ไขข้อบกพร่องที่ทราบทั้งหมดซึ่งขัดขวางการเผยแพร่แล้ว
- เราจะประกาศรุ่นที่พร้อมใช้งานใน bazel-discuss และทีม Bazel จะตรวจสอบรายงานข้อบกพร่องที่ชุมชนแจ้งสำหรับรุ่นที่พร้อมใช้งาน
- หากพบข้อบกพร่องที่ทำให้การเผยแพร่ใหม่ถูกบล็อก ให้กลับไปที่ขั้นตอนสุดท้ายและ สร้างเวอร์ชันที่พร้อมเผยแพร่ใหม่หลังจากแก้ไขปัญหาทั้งหมดแล้ว
- ไม่อนุญาตให้เพิ่มฟีเจอร์ใหม่ลงในสาขาที่เผยแพร่หลังจากสร้าง ผู้สมัครรุ่นแรกแล้ว โดยจะจำกัดการเลือกเชอร์รีเฉพาะการแก้ไขที่สำคัญ เท่านั้น หากจำเป็นต้องเลือกเชอร์รี ผู้ขอต้องตอบคำถามต่อไปนี้ เหตุใดการเปลี่ยนแปลงนี้จึงมีความสำคัญ และการเปลี่ยนแปลงนี้มีประโยชน์อย่างไร การเปลี่ยนแปลงนี้มีแนวโน้มที่จะทำให้เกิดการถดถอยมากน้อยเพียงใด
เผยแพร่รุ่นที่อาจได้รับการเผยแพร่เป็นรุ่นอย่างเป็นทางการหากไม่พบข้อบกพร่องที่ทำให้ไม่สามารถเผยแพร่ได้
- สำหรับการเผยแพร่แพตช์ ให้เผยแพร่แพตช์อย่างน้อย 2 วันทำการหลังจาก เผยแพร่เวอร์ชันทดสอบล่าสุด
- สำหรับการเผยแพร่เวอร์ชันหลักและเวอร์ชันรอง ให้เผยแพร่ 2 วันทำการหลังจาก เผยแพร่เวอร์ชันที่พร้อมใช้งานล่าสุด แต่ไม่เร็วกว่า 1 สัปดาห์หลังจาก เผยแพร่เวอร์ชันที่พร้อมใช้งานเวอร์ชันแรก
- ระบบจะเผยแพร่เฉพาะในวันที่วันถัดไปเป็นวันทำการ
- เราจะประกาศการเปิดตัวใน bazel-discuss ทีม Bazel จะตรวจสอบและแก้ไขรายงานข้อบกพร่องที่ชุมชนรายงานสำหรับการเปิดตัว เวอร์ชันใหม่
รายงานการเกิดปัญหาซ้ำ
หากผู้ใช้พบการถดถอยใน Bazel เวอร์ชันใหม่, เวอร์ชันที่พร้อมใช้งาน หรือแม้แต่ Bazel ที่ HEAD โปรดแจ้งข้อบกพร่องใน GitHub คุณสามารถใช้ Bazelisk เพื่อแบ่งครึ่งคอมมิตที่เป็นสาเหตุและรวมข้อมูลนี้ไว้ในรายงานข้อบกพร่อง
เช่น หากบิลด์สำเร็จด้วย Bazel 6.1.0 แต่ไม่สำเร็จด้วยรุ่นที่ 2 ของ 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 เวอร์ชันต่างๆ โปรดดูหน้าความเข้ากันได้ของกฎ