ตามที่ได้ประกาศไว้ในบล็อกโพสต์ต้นฉบับ Bazel เวอร์ชัน 4.0 ขึ้นไปรองรับแทร็กการเผยแพร่ 2 แบบ ได้แก่ การเผยแพร่แบบต่อเนื่องและการเผยแพร่แบบ LTS (การสนับสนุนระยะยาว) หน้านี้ครอบคลุมข้อมูลล่าสุดเกี่ยวกับรูปแบบรุ่นของ Bazel
เมทริกซ์การสนับสนุน
รุ่น LTS | ระยะการสนับสนุน | เวอร์ชันล่าสุด | สิ้นสุดการสนับสนุน |
---|---|---|---|
Bazel 8 | ทบเวลา | ตรวจสอบหน้าการเปิดตัวแบบต่อเนื่อง | ไม่มี |
บาเซล 7 | ใช้งานอยู่ | 7.4.0 | ธ.ค. 2026 |
Bazel 6 | การบำรุงรักษา | 6.5.0 | ธ.ค. 2025 |
บาเซล 5 | การบำรุงรักษา | 5.4.1 | ม.ค. 2025 |
Bazel 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 เวอร์ชันถัดไป
- การทยอยเผยแพร่อาจมีการเผยแพร่การเปลี่ยนแปลงที่เข้ากันไม่ได้ เราขอแนะนำให้ใช้ Flag ที่เข้ากันไม่ได้กับการเปลี่ยนแปลงที่สำคัญ การเปิดตัวการเปลี่ยนแปลงที่เข้ากันไม่ได้ควรเป็นไปตามนโยบายความเข้ากันได้แบบย้อนหลัง
รุ่น LTS
- รุ่นหลัก: คาดว่าจะมีการแยกรุ่น LTS ใหม่จาก HEAD ประมาณทุก 12 เดือน เมื่อมีการเผยแพร่ LTS เวอร์ชันใหม่ เวอร์ชันดังกล่าวจะเข้าสู่ระยะใช้งานทันที และ LTS เวอร์ชันก่อนหน้าจะเข้าสู่ระยะการบำรุงรักษา
- รุ่นย่อย: คาดว่าจะมีการเผยแพร่รุ่นย่อยใหม่ในแทร็ก LTS ที่ใช้งานอยู่ทุก 2 เดือน
- การเผยแพร่แพตช์: แพตช์เวอร์ชันใหม่ของ LTS รุ่นที่อยู่ในขั้นใช้งานอยู่และการบำรุงรักษาคาดว่าจะเผยแพร่เมื่อต้องการสำหรับการแก้ไขข้อบกพร่องที่สำคัญ
- เวอร์ชัน LTS ของ Bazel จะเข้าสู่ระยะเลิกใช้งานหลังจากอยู่ในระยะการบำรุงรักษาเป็นเวลา 2 ปี
สำหรับการเผยแพร่ที่วางแผนไว้ โปรดตรวจสอบปัญหาเกี่ยวกับ การเปิดตัวบน GitHub
กระบวนการและนโยบายการเผยแพร่
สำหรับรุ่นที่ทยอยเปิดตัว กระบวนการนี้ทำได้ง่ายมาก โดยระบบจะสร้างรุ่นใหม่ทุก 2 สัปดาห์โดยประมาณ ซึ่งสอดคล้องกับฐานไลน์เดียวกับรุ่น Blaze ภายในของ Google เนื่องจากกำหนดการเผยแพร่ที่รวดเร็ว เราจึงไม่แบ็กพอร์ตการเปลี่ยนแปลงใดๆ ไปยังรุ่นที่ทยอยเผยแพร่
สำหรับรุ่น LTS ให้ทำตามขั้นตอนและนโยบายด้านล่างนี้
- ระบุการคอมมิตพื้นฐานสำหรับรุ่น
- สำหรับรุ่น LTS หลักรุ่นใหม่ คอมมิตพื้นฐานคือ HEAD ของ Branch หลัก
- สำหรับรุ่นย่อยหรือเวอร์ชันแพตช์ คอมมิตพื้นฐานคือส่วน HEAD ของรุ่นล่าสุดปัจจุบันของรุ่น LTS เดียวกัน
- สร้างสาขารุ่นในชื่อ
release-<version>
จากคอมมิตพื้นฐาน - ย้ายการเปลี่ยนแปลงไปยังสาขารุ่นผ่าน PR
- ชุมชนสามารถแนะนำให้พอร์ตคอมมิตบางรายการกลับโดยตอบกลับ "
@bazel-io flag
" ในปัญหาหรือ PR ที่เกี่ยวข้องใน GitHub เพื่อระบุว่าเป็นปัญหาที่อาจทำให้เผยแพร่ไม่ได้ ทีม Bazel จะจัดประเภทปัญหาและตัดสินใจว่าจะพอร์ตคอมมิตกลับหรือไม่ - มีเพียงคอมมิตที่เข้ากันได้แบบย้อนหลังในสาขาหลักเท่านั้นที่จะพอร์ตย้อนหลังได้ แต่การเปลี่ยนแปลงเล็กน้อยเพิ่มเติมเพื่อแก้ไขข้อขัดแย้งในการผสานจะยอมรับได้
- ชุมชนสามารถแนะนำให้พอร์ตคอมมิตบางรายการกลับโดยตอบกลับ "
ย้ายการเปลี่ยนแปลงกลับไปใช้เวอร์ชันเก่าโดยใช้ปัญหาคำขอเลือกเฉพาะสำหรับผู้ดูแล Bazel
ผู้ดูแล Bazel สามารถขอเลือกเฉพาะการคอมมิตที่ต้องการมารวมไว้ในสาขารุ่นได้ กระบวนการนี้เริ่มต้นด้วยการสร้างคำขอเลือกเฉพาะใน GitHub โดยวิธีมีดังนี้
- เปิดคำขอเลือกเฉพาะ
- กรอกรายละเอียดคำขอ
- ชื่อ: ระบุชื่อที่กระชับและมีรายละเอียดสำหรับคำขอ
- รหัสคอมมิต: ป้อนรหัสของคอมมิตที่คุณต้องการเลือก หากมีการคอมมิตหลายรายการ ให้คั่นด้วยคอมมา
- หมวดหมู่: ระบุหมวดหมู่ของคำขอ
- ผู้ตรวจสอบ: หากมีผู้ตรวจสอบหลายคน ให้คั่นรหัส GitHub ของผู้ตรวจสอบด้วยคอมมา
- ตั้งค่าเหตุการณ์สำคัญ
- ค้นหาส่วน "เหตุการณ์สำคัญ" แล้วคลิกการตั้งค่า
- เลือกตัวบล็อกรุ่น X.Y.Z ที่เหมาะสม การดำเนินการนี้จะทริกเกอร์บ็อตเลือกเฉพาะเพื่อประมวลผลคำขอของคุณสำหรับสาขา "release-X.Y.Z"
- ส่งปัญหา
- เมื่อกรอกรายละเอียดทั้งหมดและกำหนดเหตุการณ์สำคัญแล้ว ให้ส่งปัญหา
บ็อตเลือกเชอร์รี่จะดำเนินการตามคำขอและแจ้งเตือนว่า การคอมมิตนั้นมีสิทธิ์สำหรับการเลือกเชอร์รี่หรือไม่ หากเลือกคอมมิตได้ ซึ่งหมายความว่าไม่มีข้อขัดแย้งในการผสานขณะเลือกคอมมิต บ็อตจะสร้างคำขอดึงข้อมูลใหม่ เมื่อสมาชิกในทีม Bazel อนุมัติคำขอดึงข้อมูลแล้ว ระบบจะเลือกคอมมิตที่ต้องการและผสานไปยังสาขารุ่น ดูตัวอย่างที่ดูของคำขอเลือกรายการที่เสร็จสมบูรณ์ได้ที่ตัวอย่างนี้
ระบุตัวบล็อกการเผยแพร่และแก้ไขปัญหาที่พบใน Branch ของรุ่น
- มีการทดสอบ Branch ของรุ่นด้วยชุดทดสอบเดียวกันในpostsubmitและไปป์ไลน์การทดสอบดาวน์สตรีมใน Bazel CI ทีม Bazel จะตรวจสอบผลการทดสอบของสาขารุ่นและแก้ไขข้อบกพร่องที่พบ
สร้างตัวเลือกการเผยแพร่ใหม่จาก Branch ของรุ่นเมื่อแก้ไขตัวบล็อกรุ่นที่ทราบทั้งหมดแล้ว
- จะมีการประกาศผู้สมัครเป็นรุ่นที่พร้อมใช้งานใน 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 เป็นเวอร์ชันล่าสุดเพื่อใช้ฟีเจอร์แยก
ความเข้ากันได้ของกฎ
หากคุณเป็นผู้เขียนกฎและต้องการคงความสามารถในการใช้งานร่วมกันกับ Banzel เวอร์ชันต่างๆ กัน โปรดดูหน้าความเข้ากันได้ของกฎ