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

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

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

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

รุ่น LTS ระยะการสนับสนุน เวอร์ชันล่าสุด สิ้นสุดการสนับสนุน
บาเซล 8 ทบเวลา ตรวจสอบหน้าการเปิดตัวแบบต่อเนื่อง ไม่มีข้อมูล
บาเซล 7 ใช้งานอยู่ 7.2.0 ธ.ค. 2026
บาเซล 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
  • รุ่นย่อยมีการแก้ไขข้อบกพร่องที่เข้ากันได้แบบย้อนหลังและฟีเจอร์ที่พอร์ตกลับจาก Branch หลัก
  • เวอร์ชันแพตช์มีการแก้ไขข้อบกพร่องร้ายแรง

นอกจากนี้ เวอร์ชันก่อนเผยแพร่จะมีการระบุด้วยการใส่เครื่องหมายขีดกลางและคำต่อท้ายวันที่ต่อท้ายหมายเลขเวอร์ชันหลักถัดไป

เช่น รุ่นใหม่ของแต่ละประเภทจะมีหมายเลขเวอร์ชันดังต่อไปนี้

  • หลัก: 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 ครั้งต่อทุก 2 เดือน
  • การเผยแพร่แพตช์: แพตช์เวอร์ชันใหม่สำหรับรุ่น LTS ในขั้นตอนใช้งานอยู่และการบำรุงรักษาคาดว่าจะเผยแพร่ได้ตามความต้องการสำหรับการแก้ไขข้อบกพร่องที่สำคัญ
  • รุ่น Bazel LTS เข้าสู่ระยะเลิกใช้งานหลังจากอยู่ในขั้นตอนการบำรุงรักษาเป็นเวลา 2 ปี

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

กระบวนการและนโยบายของการเผยแพร่

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

สำหรับรุ่น LTS ให้ทำตามขั้นตอนและนโยบายด้านล่างนี้

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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