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 sebelumnya. Rilis LTS utama yang baru mungkin berisi perubahan yang tidak kompatibel yang memerlukan beberapa upaya migrasi. Untuk mengetahui informasi selengkapnya tentang model rilis Bazel, baca Rilis Model.
Ringkasan
- Sebaiknya gunakan flag
--incompatible_*
untuk perubahan yang menyebabkan error. - Untuk setiap flag
--incompatible_*
, masalah GitHub menjelaskan perubahan dan bertujuan menyediakan urutan langkah migrasi. - Flag yang tidak kompatibel direkomendasikan untuk di-backport ke rilis LTS terbaru tanpa mengaktifkan flag secara default.
- API dan perilaku yang dilindungi oleh flag
--experimental_*
dapat berubah kapan saja baik. - 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 yang dimaksud dengan fungsi stabil?
Secara umum, API atau perilaku tanpa tanda --experimental_...
dianggap sebagai fitur yang stabil dan didukung di Bazel.
Hal ini mencakup:
- API dan bahasa Starlark
- Aturan yang dipaketkan dengan Bazel
- API Bazel seperti Remote Execution API atau Build Event Protocol
- Flag dan semantiknya
Perubahan dan urutan migrasi yang tidak kompatibel
Untuk setiap perubahan yang tidak kompatibel dalam rilis baru, tim Bazel bertujuan untuk menyediakan
urutan langkah migrasi yang membantu Anda memperbarui kode (file BUILD
dan .bzl
, sebagai
serta penggunaan Bazel dalam skrip, penggunaan Bazel API, dan sebagainya).
Perubahan yang tidak kompatibel harus memiliki flag --incompatible_*
terkait dan
terkait GitHub.
Flag yang tidak kompatibel dan perubahan yang relevan sebaiknya di-backport ke rilis LTS terbaru tanpa mengaktifkan flag secara default. Hal ini memungkinkan pengguna untuk bermigrasi untuk perubahan yang tidak kompatibel sebelum rilis LTS berikutnya tersedia.
Menyampaikan perubahan yang tidak kompatibel
Sumber informasi utama tentang perubahan yang tidak kompatibel adalah masalah GitHub yang ditandai dengan label "incompatible-change".
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 bergulir Bazel berikutnya), harus ditandai dengan
label migration-ready
. Masalah perubahan yang tidak kompatibel ditutup bila
tanda tidak kompatibel dibalik ke HEAD.