หน้านี้ให้ข้อมูลเกี่ยวกับวิธีจัดการความเข้ากันได้แบบย้อนหลัง ซึ่งรวมถึงการย้ายข้อมูลจากรุ่นหนึ่งไปยังอีกรุ่นหนึ่ง และวิธีสื่อสารการเปลี่ยนแปลงที่เข้ากันไม่ได้
Bazel มีการพัฒนาอยู่เสมอ เวอร์ชันย่อยที่เผยแพร่เป็นส่วนหนึ่งของเวอร์ชันหลัก LTS จะมีความเข้ากันได้แบบย้อนหลังอย่างสมบูรณ์ การเผยแพร่ LTS เวอร์ชันหลักใหม่ๆ อาจมีการเปลี่ยนแปลงที่เข้ากันไม่ได้ซึ่งต้องใช้ความพยายามในการย้ายข้อมูล ดูข้อมูลเพิ่มเติมเกี่ยวกับโมเดลการเผยแพร่ของ Bazel ได้ที่หน้า Release Model
สรุป
- เราขอแนะนำให้ใช้แฟล็ก
--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