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