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

รายงานปัญหา ดูแหล่งที่มา รุ่น Nightly · 7.4 7.3 · 7.2 · 7.1 · 7.0 · 6.5

ตามที่ได้ประกาศไว้ในบล็อกโพสต์ต้นฉบับ เวอร์ชัน 4.0 และสูงกว่าของ Bazel จะรองรับแทร็กการเผยแพร่ 2 แบบ ได้แก่ การเปิดตัวแบบเปิดตัวต่อเนื่องและการสนับสนุนระยะยาว (LTS) หน้านี้ครอบคลุมข้อมูลล่าสุดเกี่ยวกับรูปแบบรุ่นของ Bazel

การกำหนดเวอร์ชันของรุ่น

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 เวอร์ชันถัดไป
  • การทยอยเผยแพร่อาจมีการเผยแพร่การเปลี่ยนแปลงที่เข้ากันไม่ได้ เราขอแนะนำให้ใช้ 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 จะตรวจสอบรายงานข้อบกพร่องของชุมชนสำหรับเวอร์ชันนี้
    • หากพบตัวบล็อกรุ่นใหม่ ให้กลับไปที่ขั้นตอนสุดท้ายและสร้างรุ่นที่พร้อมใช้งานใหม่หลังจากแก้ไขปัญหาทั้งหมดแล้ว
    • ระบบไม่อนุญาตให้เพิ่มฟีเจอร์ใหม่ใน Branch ของรุ่นหลังจากสร้างผู้สมัครรุ่นแรกแล้ว
  6. พุชรุ่นที่อาจได้รับการเผยแพร่เป็นรุ่นอย่างเป็นทางการหากไม่พบตัวบล็อกการเผยแพร่เพิ่มเติม
    • สำหรับการเผยแพร่แพตช์ ให้พุชรุ่นดังกล่าวอย่างน้อย 2 วันทำการหลังจากการเปิดตัวแพตช์ครั้งล่าสุดออกมา
    • สำหรับรุ่นหลักและรุ่นย่อย ให้พุชรุ่นดังกล่าว 2 วันทำการหลังจากรุ่นที่พร้อมใช้งานรุ่นสุดท้าย แต่ต้องไม่เกิน 1 สัปดาห์หลังจากรุ่นที่พร้อมใช้งานรุ่นแรก
    • ระบบจะพุชรุ่นในวันถัดไปที่เป็นวันทำการเท่านั้น
    • การเปิดตัวจะประกาศใน bazel-discuss โดยทีม Bazel จะตรวจสอบและแก้ไขรายงานข้อบกพร่องของชุมชนสำหรับรุ่นใหม่

รายงานการเกิดปัญหาซ้ำ

หากผู้ใช้พบการถดถอยใน Bazel เวอร์ชันใหม่ รุ่นที่พร้อมใช้งาน หรือแม้แต่ Bazel ที่ HEAD โปรดแจ้งข้อบกพร่องใน GitHub คุณสามารถใช้ Bazelisk เพื่อแบ่งตัวผู้ก่อเหตุและรวมข้อมูลนี้ในรายงานข้อบกพร่อง

ตัวอย่างเช่น หากบิลด์ของคุณสำเร็จด้วย Bazel 6.1.0 แต่ทำไม่สำเร็จด้วยเวอร์ชัน 6.2.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 เวอร์ชันต่างๆ โปรดดูหน้าความเข้ากันได้ของกฎ