รุ่นที่เผยแพร่

รายงานปัญหา ดูแหล่งที่มา Nightly · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

ตามที่ได้ประกาศไว้ในบล็อกโพสต์ต้นฉบับ 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 เราจะทำตามขั้นตอนและนโยบายด้านล่าง

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