Halaman ini memberikan informasi tentang cara menangani kompatibilitas mundur, termasuk migrasi dari satu rilis ke rilis lainnya dan cara menyampaikan perubahan yang tidak kompatibel.
Bazel berkembang. Versi minor yang dirilis sebagai bagian dari versi utama LTS sepenuhnya kompatibel dengan versi sebelumnya. Rilis LTS utama yang baru mungkin berisi perubahan yang tidak kompatibel dan memerlukan beberapa upaya migrasi. Untuk informasi selengkapnya tentang model rilis Bazel, lihat halaman Model Rilis.
Ringkasan
- Sebaiknya gunakan tanda
--incompatible_*
untuk perubahan yang dapat menyebabkan gangguan. - Untuk setiap flag
--incompatible_*
, masalah GitHub menjelaskan perubahan perilaku dan bertujuan untuk memberikan resep migrasi. - Flag yang tidak kompatibel direkomendasikan untuk di-porting kembali ke rilis LTS terbaru tanpa mengaktifkan flag secara default.
- API dan perilaku yang dilindungi oleh tanda
--experimental_*
dapat berubah kapan saja. - Jangan pernah menjalankan build produksi dengan flag
--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 tanda --experimental_...
dianggap
fitur yang didukung dan stabil di Bazel.
Fitur ini mencakup:
- Bahasa dan API Starlark
- Aturan yang dipaketkan dengan Bazel
- Bazel API seperti Remote Execution API atau Build Event Protocol
- Flag dan semantiknya
Perubahan dan resep migrasi yang tidak kompatibel
Untuk setiap perubahan yang tidak kompatibel dalam rilis baru, tim Bazel ingin menyediakan
resep 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 masalah GitHub yang sesuai.
Flag yang tidak kompatibel dan perubahan yang relevan direkomendasikan untuk di-backport ke rilis LTS terbaru tanpa mengaktifkan flag secara default. Hal ini memungkinkan pengguna melakukan migrasi untuk perubahan yang tidak kompatibel sebelum rilis LTS berikutnya tersedia.
Menyampaikan perubahan yang tidak kompatibel
Sumber utama informasi tentang perubahan yang tidak kompatibel adalah masalah GitHub yang ditandai dengan label"compatible-change".
Untuk setiap perubahan yang tidak kompatibel, masalah menentukan hal berikut:
- Nama flag yang mengontrol perubahan yang tidak kompatibel
- Deskripsi fungsi yang diubah
- Resep migrasi
Jika perubahan yang tidak kompatibel siap dimigrasikan dengan Bazel di HEAD
(sehingga, juga dengan rilis berkelanjutan Bazel berikutnya), perubahan tersebut harus ditandai dengan
label migration-ready
. Masalah perubahan yang tidak kompatibel akan ditutup jika flag yang tidak kompatibel dibalik di HEAD.