หน้านี้ให้ข้อมูลเกี่ยวกับวิธีจัดการความเข้ากันได้แบบย้อนหลัง รวมถึงการย้ายข้อมูลจากรุ่นหนึ่งไปยังอีกรุ่นหนึ่งและวิธีสื่อสาร การเปลี่ยนแปลงที่ไม่เข้ากัน
Bazel กำลังพัฒนา เวอร์ชันย่อยที่เผยแพร่เป็นส่วนหนึ่งของเวอร์ชันหลัก LTS จะมีความเข้ากันได้แบบย้อนหลังอย่างเต็มรูปแบบ LTS เวอร์ชันหลักใหม่ๆ อาจมีการเปลี่ยนแปลงที่ใช้งานร่วมกันไม่ได้ ซึ่งต้องมีการย้ายข้อมูล ดูข้อมูลเพิ่มเติมเกี่ยวกับรูปแบบการเผยแพร่ของ Bazel ได้ที่หน้ารูปแบบการเผยแพร่
สรุป
- ขอแนะนำให้ใช้ฟีเจอร์
--incompatible_*
สำหรับการเปลี่ยนแปลงที่ทำให้เกิดข้อขัดข้อง - สำหรับ
--incompatible_*
แต่ละฟีเจอร์ที่ต้องแจ้ง GitHub จะอธิบายการเปลี่ยนแปลงลักษณะการทำงานและมีเป้าหมายที่จะให้คำแนะนำในการย้ายข้อมูล - เราขอแนะนำให้ย้อนกลับพอร์ตฟีเจอร์ที่ไม่รองรับไปยัง LTS เวอร์ชันล่าสุดโดยไม่ต้องเปิดใช้ฟีเจอร์โดยค่าเริ่มต้น
- API และลักษณะการทำงานที่ได้รับการป้องกันโดยฟีเจอร์
--experimental_*
อาจเปลี่ยนแปลงได้ทุกเมื่อ - ห้ามเรียกใช้บิลด์เวอร์ชันที่ใช้งานจริงด้วยแฟล็ก
--experimental_*
หรือ--incompatible_*
วิธีปฏิบัติตามนโยบายนี้
- สำหรับผู้ใช้ Bazel - วิธีอัปเดต Bazel
- สำหรับผู้ร่วมให้ข้อมูล - แนวทางปฏิบัติแนะนำสำหรับการเปลี่ยนแปลงที่ไม่เข้ากัน
- สำหรับผู้จัดการการเผยแพร่ - วิธีอัปเดตป้ายกำกับปัญหาและการเผยแพร่
ฟังก์ชันการทำงานที่เสถียรคืออะไร
โดยทั่วไปแล้ว API หรือลักษณะการทำงานที่ไม่มีแฟล็ก --experimental_...
จะถือว่าเป็นฟีเจอร์ที่เสถียรและรองรับใน Bazel
ซึ่งรวมถึงเนื้อหาต่อไปนี้
- ภาษาและ API ของ Starlark
- กฎที่มาพร้อมกับ Bazel
- API ของ Bazel เช่น API การดำเนินการจากระยะไกลหรือโปรโตคอลเหตุการณ์การสร้าง
- แฟล็กและความหมายของแฟล็ก
การเปลี่ยนแปลงที่ไม่รองรับและสูตรการย้ายข้อมูล
สำหรับการเปลี่ยนแปลงที่ไม่เข้ากันทุกครั้งในการเปิดตัวเวอร์ชันใหม่ ทีม Bazel มุ่งมั่นที่จะจัดหาสูตรการย้ายข้อมูลที่จะช่วยคุณอัปเดตโค้ด (ไฟล์ BUILD
และ .bzl
รวมถึงการใช้งาน Bazel ในสคริปต์ การใช้งาน Bazel API และอื่นๆ)
การเปลี่ยนแปลงที่เข้ากันไม่ได้ควรมี--incompatible_*
ที่เกี่ยวข้องและปัญหาใน GitHub ที่สอดคล้องกัน
ขอแนะนำให้ย้อนกลับการเปลี่ยนแปลงที่เกี่ยวข้องและฟีเจอร์ที่ไม่รองรับไปยัง รุ่น LTS ล่าสุดโดยไม่ต้องเปิดใช้ฟีเจอร์นี้โดยค่าเริ่มต้น ซึ่งจะช่วยให้ผู้ใช้ย้ายข้อมูลสำหรับการเปลี่ยนแปลงที่ไม่เข้ากันได้ก่อนที่ LTS รุ่นถัดไปจะพร้อมใช้งาน
การสื่อสารการเปลี่ยนแปลงที่ไม่รองรับ
แหล่งข้อมูลหลักเกี่ยวกับการเปลี่ยนแปลงที่ไม่เข้ากันคือปัญหาใน GitHub ที่มีป้ายกำกับ"incompatible-change"
สำหรับการเปลี่ยนแปลงที่ไม่เข้ากันทุกครั้ง ปัญหาจะระบุสิ่งต่อไปนี้
- ชื่อของฟีเจอร์ที่ควบคุมการเปลี่ยนแปลงที่ไม่รองรับ
- คำอธิบายฟังก์ชันการทำงานที่เปลี่ยนแปลง
- สูตรการย้ายข้อมูล
เมื่อการเปลี่ยนแปลงที่ไม่เข้ากันพร้อมสำหรับการย้ายข้อมูลด้วย Bazel ที่ HEAD
(ดังนั้นจึงรวมถึง Bazel รุ่นถัดไปที่เผยแพร่แบบต่อเนื่องด้วย) ควรทำเครื่องหมายด้วยป้ายกำกับ migration-ready
ปัญหาการเปลี่ยนแปลงที่ไม่เข้ากันจะปิดเมื่อมีการเปลี่ยนสถานะของ
แฟล็กที่ไม่เข้ากันที่ HEAD