Halaman ini memberikan informasi tentang cara menangani kompatibilitas mundur, termasuk melakukan migrasi dari satu rilis ke rilis lainnya dan cara berkomunikasi perubahan yang tidak kompatibel.
Bazel terus berkembang. Versi minor yang dirilis sebagai bagian dari Versi utama LTS sepenuhnya kompatibel dengan versi lama. Perubahan antara rilis LTS utama mungkin berisi perubahan tidak kompatibel yang memerlukan melakukan upaya migrasi. Untuk mengetahui informasi selengkapnya tentang cara ritme rilis Bazel bekerja, lihat Mengumumkan rilis Bazel Dukungan Jangka Panjang (LTS).
Ringkasan
- Sebaiknya gunakan tanda
--incompatible_*
untuk perubahan yang dapat menyebabkan gangguan. - Untuk setiap flag
--incompatible_*
, masalah GitHub menjelaskan perubahan perilaku dan bertujuan memberikan resep migrasi. - API dan perilaku yang dilindungi oleh flag
--experimental_*
dapat berubah kapan saja. - Jangan pernah menjalankan build produksi dengan tanda
--experimental_*
atau--incompatible_*
.
Cara mematuhi kebijakan ini
- Untuk pengguna Bazel - cara mengupdate Bazel
- Untuk kontributor - praktik terbaik untuk perubahan yang tidak kompatibel
- Untuk pengelola rilis - cara memperbarui label dan rilis masalah
Apa itu fungsi stabil?
Secara umum, API atau perilaku tanpa flag --experimental_...
dianggap
stabil yang didukung
dalam Bazel.
Hal ini mencakup:
- Bahasa dan API Starlark
- Aturan yang dipaketkan bersama Bazel
- API Bazel seperti Remote Execution API atau Build Event Protocol
- Tanda dan semantiknya
Perubahan dan urutan migrasi yang tidak kompatibel
Untuk setiap perubahan yang tidak kompatibel dalam rilis baru, tim Bazel bertujuan untuk menyediakan
urutan proses migrasi yang membantu Anda memperbarui kode
(file BUILD
dan .bzl
, serta penggunaan Bazel dalam skrip,
penggunaan Bazel API, dan sebagainya).
Perubahan yang tidak kompatibel harus memiliki flag --incompatible_*
terkait dan
terkait GitHub.
Menyampaikan perubahan yang tidak kompatibel
Sumber utama informasi tentang perubahan yang tidak kompatibel adalah masalah GitHub ditandai dengan "incompatible-change" label.
Untuk setiap perubahan yang tidak kompatibel, masalahnya menentukan hal berikut:
- Nama tanda yang mengontrol perubahan yang tidak kompatibel
- Deskripsi fungsi yang diubah
- Urutan migrasi
Saat perubahan yang tidak kompatibel siap dimigrasikan dengan Bazel di HEAD (oleh karena itu, juga dengan rilis berkelanjutan Bazel berikutnya), perubahan tersebut harus ditandai dengan label migration-ready
. Masalah perubahan yang tidak kompatibel ditutup saat tanda yang tidak kompatibel dibalik ke HEAD.