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

รายงานปัญหา ดูแหล่งที่มา

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

เมทริกซ์การสนับสนุน

รุ่น LTS ขั้นตอนการสนับสนุน เวอร์ชันล่าสุด สิ้นสุดการสนับสนุน
บาเซล 8 ทบเวลา ดูหน้าการเปิดตัวทีละรุ่น ไม่มีข้อมูล
บาเซล 7 ใช้งานอยู่ 7.1.1 ธ.ค. 2026
Bazel 6 การบำรุงรักษา 6.5.0 ธ.ค. 2025
บาเซล 5 การบำรุงรักษา 5.4.1 ม.ค. 2025
บาเซล 4 เลิกใช้ 4.2.4 Jan 2024

ดูรุ่น Bazel LTS ทั้งหมดได้ที่หน้าการเปิดตัวใน GitHub

การกำหนดเวอร์ชันที่เผยแพร่

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 รุ่นถัดไป
  • การเปิดตัวแบบทีละรุ่นอาจมีการเปลี่ยนแปลงที่เข้ากันไม่ได้ เราขอแนะนำให้ใช้แฟล็กที่เข้ากันไม่ได้กับการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ การเปิดตัวการเปลี่ยนแปลงที่เข้ากันไม่ได้ควรเป็นไปตามนโยบายความเข้ากันได้แบบย้อนหลัง

รุ่น LTS

  • รุ่นหลัก: คาดว่า LTS รุ่นใหม่จะถูกตัดออกจาก HEAD ทุกๆ 12 เดือน เมื่อ LTS รุ่นใหม่เปิดตัว LTS จะเข้าสู่ขั้นตอนการบำรุงรักษาทันที และ LTS รุ่นก่อนหน้านี้จะเข้าสู่ขั้นตอนการบำรุงรักษา
  • รุ่นย่อย: จะมีการเผยแพร่ 1 เวอร์ชันย่อยใหม่ในแทร็ก Active LTS ทุกๆ 2 เดือน
  • รุ่นแพตช์: เวอร์ชันแพตช์ใหม่สำหรับรุ่น LTS ในขั้นตอน "ใช้งานอยู่" และ "การบำรุงรักษา" คาดว่าจะเผยแพร่ออนดีมานด์เพื่อแก้ไขข้อบกพร่องที่สำคัญ
  • รุ่น Bazel LTS จะเข้าสู่ขั้นการเลิกใช้งานหลังจากอยู่ในขั้นตอนการบำรุงรักษาเป็นเวลา 2 ปี

สำหรับการเผยแพร่ที่วางแผนไว้ โปรดตรวจสอบปัญหาเกี่ยวกับการเผยแพร่ใน GitHub

ขั้นตอนการเผยแพร่และนโยบาย

สำหรับการเปิดตัวแบบต่อเนื่อง ขั้นตอนนั้นไม่ซับซ้อน โดยจะมีการสร้างรุ่นใหม่ประมาณทุก 2 สัปดาห์ ซึ่งสอดคล้องกับเกณฑ์พื้นฐานเดียวกันกับการเปิดตัวภายในของ Google รุ่น Blaze ตามกำหนดการเผยแพร่อย่างรวดเร็ว เราไม่ได้ย้อนกลับการเปลี่ยนแปลงใดๆ ที่จะเกิดขึ้นกับการเปิดตัวแบบค่อยเป็นค่อยไป

สำหรับรุ่น LTS เราปฏิบัติตามขั้นตอนและนโยบายด้านล่าง

  1. กำหนดสัญญาผูกมัดพื้นฐานสำหรับการเผยแพร่นี้
    • สำหรับ LTS รุ่นหลักใหม่ คอมมิตพื้นฐานคือ HEAD ของสาขาหลัก
    • สำหรับรุ่นย่อยหรือแพตช์ คอมมิตพื้นฐานคือส่วนหัวของ LTS เวอร์ชันล่าสุดปัจจุบัน
  2. สร้าง Branch ในชื่อของ release-<version> จากสัญญาผูกมัดพื้นฐาน
  3. การเปลี่ยน Backport ผ่าน PR เป็น Branch
    • ชุมชนสามารถแนะนำการคอมมิตบางอย่างเพื่อทำการย้อนกลับได้โดยตอบกลับว่า "@bazel-io flag" ในประเด็นหรือ PR ที่เกี่ยวข้องของ GitHub เพื่อทำเครื่องหมายว่าอาจเป็นตัวบล็อกการปล่อยห้องว่าง ทีม Bazel จะคัดตัวและตัดสินใจว่าจะส่งการคอมมิตกลับหรือไม่
    • เฉพาะคอมมิตที่เข้ากันได้แบบย้อนหลังในสาขาหลักเท่านั้นที่สามารถมีการพอร์ตกลับได้ เรายอมรับการเปลี่ยนแปลงเล็กน้อยเพิ่มเติมเพื่อแก้ไขความขัดแย้งในการรวม
  4. การเปลี่ยน Backport โดยใช้ปัญหาคำขอ Cherry-Choose สำหรับผู้ดูแล Bazel

    • ผู้ดูแลของ Bazel สามารถขอให้เลือกคอมมิตบางอย่าง ไปยังสาขาที่เปิดตัวได้ กระบวนการนี้เริ่มจากการสร้างคำขอที่เลือกเองบน GitHub มาดูวิธีกัน

      1. เปิดคำขอเลือกซากุระ
      2. กรอกรายละเอียดคำขอ
        • ชื่อ: ตั้งชื่อคำขอที่สั้นกระชับ
        • รหัสคอมมิต: ป้อนรหัสของคอมมิตที่คุณต้องการเลือก หากมีหลายคอมมิต ให้คั่นแต่ละรายการด้วยเครื่องหมายจุลภาค
        • หมวดหมู่: ระบุหมวดหมู่ของคำขอ
        • ผู้ตรวจสอบ: สำหรับผู้ตรวจสอบหลายคน ให้คั่น รหัส GitHub ด้วยเครื่องหมายจุลภาค
      3. ตั้งเป้าหมาย
        • ค้นหาส่วน "เป้าหมาย" แล้วคลิกการตั้งค่า
        • เลือกตัวบล็อกรุ่น X.Y.Z ที่เหมาะสม การดำเนินการนี้จะทริกเกอร์บ็อตที่เลือกใช้และดำเนินการตามคำขอของคุณสำหรับสาขา "release-X.Y.Z"
      4. ส่งปัญหา
        • เมื่อกรอกรายละเอียดทั้งหมดและตั้งค่าเป้าหมายแล้ว ให้ส่งปัญหา
    • บ็อตที่คัดสรรมาเป็นพิเศษจะดำเนินการตามคำขอและแจ้งเตือน หากการดำเนินการนั้นมีสิทธิ์สำหรับการเลือกเก็บลูกสุนัข หากคอมมิตเป็นแบบเลือกได้เสมอ ซึ่งหมายความว่าจะไม่มีข้อขัดแย้งขณะเลือกคอมมิต บ็อตจะสร้างคำขอพุลใหม่ เมื่อสมาชิกของทีม Bazel อนุมัติคำขอพุลแล้ว ระบบจะเลือกสัญญาผูกมัดดังกล่าวและรวมเข้ากับ Branch โปรดดูตัวอย่างนี้เพื่อดูตัวอย่างคำขอเลือกเชอร์รี่ที่สมบูรณ์

  5. ระบุตัวบล็อกรุ่นและแก้ไขปัญหาที่พบใน Branch

  6. สร้างตัวเลือกการเผยแพร่ใหม่จาก Branch ของรุ่นเมื่อแก้ไขตัวบล็อกรุ่นที่รู้จักทั้งหมดแล้ว

    • เราได้ประกาศเปิดตัวผู้ลงสมัครรับเลือกตั้งใน Bazel-discuss ทีม Bazel จะตรวจสอบรายงานข้อบกพร่องของชุมชนของผู้สมัครดังกล่าว
    • หากตรวจพบตัวบล็อกการเผยแพร่ใหม่ ให้กลับไปที่ขั้นตอนสุดท้ายและสร้างตัวเลือกการเผยแพร่ใหม่หลังจากแก้ไขปัญหาทั้งหมดแล้ว
    • ไม่อนุญาตให้เพิ่มฟีเจอร์ใหม่ในสาขาการเผยแพร่หลังจากที่สร้างตัวเลือกรุ่นแรกแล้ว
  7. พุชรุ่นที่อาจได้รับการเผยแพร่เป็นผลงานอย่างเป็นทางการ หากไม่พบตัวบล็อกการเผยแพร่เพิ่มเติม

    • สำหรับการเผยแพร่แพตช์ โปรดส่งรุ่นอย่างน้อย 2 วันทำการหลังจากเปิดตัวรุ่นล่าสุดแล้ว
    • สำหรับการเผยแพร่รุ่นหลักและรอง ให้พุชการเผยแพร่ 2 วันทำการหลังจากเปิดตัวผลงานล่าสุดแล้ว แต่จะต้องไม่เร็วกว่า 1 สัปดาห์หลังจากรุ่นที่เปิดตัวครั้งแรกไป
    • โดยจะเผยแพร่แค่ในวันที่วันถัดไปเป็นวันทำการ
    • มีประกาศเกี่ยวกับการเผยแพร่ใน Bazel-discuss ทีม Bazel จะตรวจสอบและแก้ไขรายงานข้อบกพร่องของชุมชนสำหรับรุ่นใหม่

รายงานการถดถอย

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

ตัวอย่างเช่น หากบิลด์ของคุณประสบความสำเร็จกับ Bazel 6.1.0 แต่ล้มเหลวกับตัวเลือกรุ่นที่สองที่ 6.2.0 คุณสามารถตัดผ่าน

bazelisk --bisect=6.1.0..release-6.2.0rc2 build //foo:bar

คุณสามารถตั้งค่าตัวแปรสภาพแวดล้อม BAZELISK_SHUTDOWN หรือ BAZELISK_CLEAN ให้เรียกใช้คำสั่ง Bazel ที่เกี่ยวข้องเพื่อรีเซ็ตสถานะของบิลด์หากจำเป็นต้องจำลองปัญหา ดูรายละเอียดเพิ่มเติมได้ในเอกสารประกอบเกี่ยวกับลักษณะทางเท้าของบาเซลิสก์

อย่าลืมอัปเกรด Bazelisk เป็นเวอร์ชันล่าสุดเพื่อใช้ฟีเจอร์แบ่งส่วน

ความเข้ากันได้ของกฎ

หากคุณเป็นผู้เขียนกฎและต้องการคงความเข้ากันได้กับ Bazel เวอร์ชันต่างๆ ไว้ โปรดไปที่หน้าความเข้ากันได้ ของกฎ