Halaman ini memberikan informasi tentang cara menangani kompatibilitas mundur, termasuk cara bermigrasi dari satu rilis ke rilis lainnya dan cara mengomunikasikan 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 dapat berisi perubahan yang tidak kompatibel yang memerlukan upaya migrasi. Untuk mengetahui informasi selengkapnya tentang cara kerja irama rilis Bazel, lihat Pengumuman rilis Dukungan Jangka Panjang (LTS) Bazel.
Ringkasan
- Sebaiknya gunakan flag
--incompatible_*untuk perubahan yang melanggar. - Untuk setiap flag
--incompatible_*, masalah GitHub menjelaskan perubahan perilaku dan bertujuan untuk memberikan resep migrasi. - API dan perilaku yang dilindungi oleh flag
--experimental_*dapat berubah kapan saja. - Jangan pernah menjalankan build produksi dengan
--experimental_*atau--incompatible_*flag.
Cara mengikuti kebijakan ini
- Untuk pengguna Bazel - cara mengupdate Bazel
- Untuk kontributor - praktik terbaik untuk perubahan yang tidak kompatibel
- Untuk pengelola rilis - cara mengupdate label masalah dan rilis
Apa yang dimaksud dengan fungsi stabil?
Secara umum, API atau perilaku tanpa flag --experimental_... dianggap sebagai fitur stabil dan didukung di Bazel.
Hal ini mencakup:
- Bahasa dan API Starlark
- Aturan yang disertakan dengan Bazel
- API Bazel seperti API Eksekusi Jarak Jauh atau Protokol Peristiwa Build
- Flag dan semantiknya
Perubahan yang tidak kompatibel dan resep migrasi
Untuk setiap perubahan yang tidak kompatibel dalam rilis baru, tim Bazel bertujuan untuk memberikan resep migrasi yang membantu Anda mengupdate kode (BUILD dan file .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.
Mengomunikasikan 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, masalah ini menentukan hal berikut:
- Nama flag yang mengontrol perubahan yang tidak kompatibel
- Deskripsi fungsi yang diubah
- Resep migrasi
Jika perubahan yang tidak kompatibel siap untuk migrasi dengan Bazel di HEAD (oleh karena itu, juga dengan rilis rolling Bazel berikutnya), perubahan tersebut harus ditandai dengan label migration-ready. Masalah perubahan yang tidak kompatibel akan ditutup saat flag yang tidak kompatibel dibalik di HEAD.