ตามที่ได้ประกาศไว้ในบล็อกโพสต์ต้นฉบับ 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 เผยแพร่รุ่น 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
เมทริกซ์การสนับสนุน
รุ่น LTS | ขั้นตอนการสนับสนุน | เวอร์ชันล่าสุด | สิ้นสุดการสนับสนุน |
---|---|---|---|
Bazel 7 | ทบเวลา | ดูหน้าการเผยแพร่ของ GitHub | ไม่มี |
Bazel 6 | ใช้งานอยู่ | 6.4.0 | ธ.ค. 2025 |
Bazel 5 | การบำรุงรักษา | 5.4.1 | ม.ค. 2025 |
Bazel 4 | การบำรุงรักษา | 4.2.4 | Jan 2024 |
คุณดู Bazel ทุกรุ่นได้ในหน้าการเผยแพร่ใน GitHub
ขั้นตอนและนโยบายการเผยแพร่
สำหรับการเผยแพร่แบบต่อเนื่อง กระบวนการจะตรงไปตรงมา โดยจะมีการสร้างรุ่นใหม่ทุกๆ 2 สัปดาห์โดยประมาณ ซึ่งจะสอดคล้องกับพื้นฐานเดียวกันกับการเผยแพร่ Blaze ภายในของ Google เนื่องจากกำหนดการเผยแพร่ที่รวดเร็ว เราจึงไม่ย้อนกลับการเปลี่ยนแปลงใดๆ ในการเผยแพร่แบบต่อเนื่อง
สำหรับรุ่น LTS เราจะทำตามขั้นตอนและนโยบายด้านล่าง
- กำหนดคอมมิตพื้นฐานสำหรับการเผยแพร่
- สำหรับการเปิดตัว LTS เวอร์ชันหลักใหม่ คอมมิตพื้นฐานคือ HEAD ของสาขาหลัก
- สำหรับการเผยแพร่รุ่นย่อยหรือแพตช์ คอมมิตพื้นฐานคือ HEAD ของ เวอร์ชัน LTS เดียวกันล่าสุดในปัจจุบัน
- สร้างกิ่งรุ่นในชื่อ
release-<version>
จากการเปลี่ยนแปลงพื้นฐาน - ส่งการเปลี่ยนแปลงย้อนกลับผ่าน PR ไปยังกิ่งของการเผยแพร่
- ชุมชนสามารถแนะนำคอมมิตบางรายการให้มีการย้อนพอร์ตได้โดยการตอบกลับ
"
@bazel-io flag
" ในปัญหาหรือ PR ที่เกี่ยวข้องใน GitHub เพื่อทำเครื่องหมายว่าอาจเป็น ข้อจำกัดในการเผยแพร่ จากนั้นทีม Bazel จะจัดเรียงและตัดสินใจว่าจะ ย้อนพอร์ตคอมมิตหรือไม่ - เฉพาะการคอมมิตที่เข้ากันได้แบบย้อนหลังในกิ่งหลักเท่านั้นที่สามารถย้อนกลับได้ การเปลี่ยนแปลงเล็กๆ น้อยๆ เพิ่มเติมเพื่อแก้ไขข้อขัดแย้งในการผสานเป็นสิ่งที่ยอมรับได้
- ชุมชนสามารถแนะนำคอมมิตบางรายการให้มีการย้อนพอร์ตได้โดยการตอบกลับ
"
- ระบุสิ่งที่บล็อกการเผยแพร่และแก้ไขปัญหาที่พบในสาขาการเผยแพร่
- เราจะทดสอบสาขาที่เผยแพร่ด้วยชุดทดสอบเดียวกันใน postsubmitและ ไปป์ไลน์การทดสอบดาวน์สตรีม ใน 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 เวอร์ชันต่างๆ โปรดดูหน้าความเข้ากันได้ของกฎ