ความเข้ากันได้แบบย้อนหลัง

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

หน้านี้ให้ข้อมูลเกี่ยวกับวิธีจัดการความเข้ากันได้แบบย้อนหลัง ซึ่งรวมถึงการย้ายข้อมูลจากรุ่นหนึ่งไปยังอีกรุ่นหนึ่ง และวิธีสื่อสารการเปลี่ยนแปลงที่ใช้ร่วมกันไม่ได้

Bazel กำลังพัฒนา เวอร์ชันย่อยที่เปิดตัวในฐานะเวอร์ชันหลักของ LTS จะเข้ากันได้แบบย้อนหลังโดยสมบูรณ์ รุ่น LTS รุ่นหลักรุ่นใหม่อาจมีการเปลี่ยนแปลงที่เข้ากันไม่ได้ซึ่งอาศัยความพยายามในการย้ายข้อมูล สำหรับข้อมูลเพิ่มเติมเกี่ยวกับโมเดลการเผยแพร่ของ Bazel โปรดดูหน้ารุ่นการเผยแพร่

สรุป

  1. ขอแนะนำให้ใช้แฟล็ก --incompatible_* สำหรับการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ
  2. สำหรับการแฟล็ก --incompatible_* ทุกๆ รายการ ปัญหา GitHub จะอธิบายการเปลี่ยนแปลงลักษณะการทำงานและมุ่งเน้นที่การระบุสูตรการย้ายข้อมูล
  3. ขอแนะนำให้ย้ายแฟล็กที่ใช้ร่วมกันไม่ได้ไปยัง LTS รุ่นล่าสุดโดยไม่ต้องเปิดใช้แฟล็กโดยค่าเริ่มต้น
  4. API และลักษณะการทำงานที่ป้องกันด้วยแฟล็ก --experimental_* อาจเปลี่ยนแปลงได้ทุกเมื่อ
  5. ไม่เรียกใช้บิลด์เวอร์ชันที่ใช้งานจริงที่มีแฟล็ก --experimental_* หรือ --incompatible_*

วิธีปฏิบัติตามนโยบายนี้

ฟังก์ชันการทำงานที่เสถียรคืออะไร

โดยทั่วไป API หรือลักษณะการทำงานที่ไม่มี Flag --experimental_... จะถือว่ามีความเสถียรและฟีเจอร์ที่รองรับใน Bazel

ซึ่งรวมถึงเนื้อหาต่อไปนี้

  • ภาษาและ API ของ Starlark
  • กฎที่มาพร้อมกับ Bazel
  • Bazel API เช่น Remote Execution API หรือ Build Event Protocol
  • ธงและความหมายของธง

การเปลี่ยนแปลงและสูตรการย้ายข้อมูลที่ใช้ร่วมกันไม่ได้

สำหรับการเปลี่ยนแปลงที่เข้ากันไม่ได้ทุกครั้งในรุ่นใหม่ ทีม Bazel มีเป้าหมายที่จะจัดเตรียมสูตรการย้ายข้อมูลที่จะช่วยคุณอัปเดตโค้ด (ไฟล์ BUILD และ .bzl รวมถึงการใช้ Bazel ในสคริปต์ การใช้ Bazel API และอื่นๆ)

การเปลี่ยนแปลงที่ใช้ร่วมกันไม่ได้ควรมี Flag --incompatible_* ที่เกี่ยวข้องและปัญหา GitHub ที่เกี่ยวข้อง

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

การสื่อสารการเปลี่ยนแปลงที่ไม่สามารถใช้ร่วมกันได้

แหล่งข้อมูลหลักของข้อมูลเกี่ยวกับการเปลี่ยนแปลงที่เข้ากันไม่ได้คือปัญหาของ GitHub ที่ทำเครื่องหมายด้วยป้ายกำกับ"in supported-change"

สำหรับการเปลี่ยนแปลงที่เข้ากันไม่ได้ทุกรายการ ปัญหาจะระบุสิ่งต่อไปนี้

  • ชื่อแฟล็กที่ควบคุมการเปลี่ยนแปลงที่เข้ากันไม่ได้
  • คำอธิบายฟังก์ชันการทำงานที่มีการเปลี่ยนแปลง
  • สูตรการย้ายข้อมูล

เมื่อการเปลี่ยนแปลงที่เข้ากันไม่ได้พร้อมสำหรับการย้ายข้อมูลโดยใช้ Bazel ที่ HEAD (ด้วยเหตุนี้ พร้อมกับรุ่นถัดไปของ Bazel ที่เปิดตัวด้วย) ควรมีป้ายกำกับ migration-ready กำกับไว้ ปัญหาการเปลี่ยนแปลงที่ใช้ร่วมกันไม่ได้จะปิดลงเมื่อมีการพลิกธงที่ใช้ร่วมกันไม่ได้ที่ HEAD