Seperti yang diumumkan dalam postingan blog asli, Bazel versi 4.0 dan yang lebih tinggi memberikan dukungan untuk dua jalur rilis: rilis rolling dan rilis dukungan jangka panjang (LTS). Halaman ini membahas informasi terbaru tentang model rilis Bazel.
Matriks dukungan
Rilis LTS | Tahap dukungan | Versi terbaru | Akhir dukungan |
---|---|---|---|
Bazel 8 | Berkelanjutan | Periksa halaman rilis berkelanjutan | T/A |
Bazel 7 | Aktif | 7.4.0 | Des 2026 |
Bazel 6 | Pemeliharaan | 6.5.0 | Des 2025 |
Bazel 5 | Pemeliharaan | 5.4.1 | Jan 2025 |
Bazel 4 | Tidak digunakan lagi | 4.2.4 | Januari 2024 |
Semua rilis Bazel LTS dapat ditemukan di halaman rilis di GitHub.
Pembuatan versi rilis
Bazel menggunakan skema Pembuatan Versi Semantik major.minor.patch.
- Rilis utama berisi fitur yang tidak kompatibel dengan rilis sebelumnya. Setiap versi utama Bazel adalah rilis LTS.
- Rilis minor berisi perbaikan bug dan fitur yang kompatibel dengan versi lama yang di-backport dari cabang utama.
- Rilis patch berisi perbaikan bug kritis.
Selain itu, versi pra-rilis ditunjukkan dengan menambahkan tanda hubung dan akhiran tanggal ke nomor versi utama berikutnya.
Misalnya, rilis baru dari setiap jenis akan menghasilkan nomor versi ini:
- Utama: 6.0.0
- Minor: 6.1.0
- Patch: 6.1.2
- Pra-rilis: 7.0.0-pre.20230502.1
Tahap dukungan
Untuk setiap versi utama Bazel, ada empat tahap dukungan:
- Rolling: Versi utama ini masih dalam versi pra-rilis, tim Bazel memublikasikan rilis rolling dari HEAD.
- Aktif: Versi utama ini adalah rilis LTS aktif saat ini. Tim Bazel melakukan backport fitur penting dan perbaikan bug ke rilis minornya.
- Pemeliharaan: Versi utama ini adalah rilis LTS lama dalam mode pemeliharaan. Tim Bazel hanya berjanji untuk melakukan backport perbaikan bug penting untuk masalah keamanan dan masalah kompatibilitas OS ke rilis LTS ini.
- Tidak digunakan lagi: Tim Bazel tidak lagi menyediakan dukungan untuk versi utama ini. Semua pengguna harus bermigrasi ke rilis Bazel LTS yang lebih baru.
Ritme rilis
Bazel secara rutin memublikasikan rilis untuk dua jalur rilis.
Rilis berkelanjutan
- Rilis berkelanjutan dikoordinasikan dengan rilis Google Blaze dan dirilis dari HEAD sekitar setiap dua minggu. Ini adalah pratinjau dari rilis Bazel LTS berikutnya.
- Rilis rolling dapat mengirimkan perubahan yang tidak kompatibel. Flag yang tidak kompatibel direkomendasikan untuk perubahan besar yang menyebabkan error. Peluncuran perubahan yang tidak kompatibel harus mengikuti kebijakan kompatibilitas mundur kami.
Rilis LTS
- Rilis utama: Rilis LTS baru diperkirakan akan dipotong dari HEAD kira-kira setiap 12 bulan. Setelah dirilis, rilis LTS baru akan langsung memasuki tahap Aktif, dan rilis LTS sebelumnya akan memasuki tahap Pemeliharaan.
- Rilis minor: Versi minor baru di jalur LTS Aktif diperkirakan akan dirilis sekali setiap 2 bulan.
- Rilis patch: Versi patch baru untuk rilis LTS dalam tahap Aktif dan Pemeliharaan diperkirakan akan dirilis sesuai permintaan untuk perbaikan bug kritis.
- Rilis LTS Bazel memasuki tahap Tidak Digunakan Lagi setelah berada di tahap Pemeliharaan selama 2 tahun.
Untuk rilis yang direncanakan, harap periksa masalah rilis kami di GitHub.
Prosedur & kebijakan rilis
Untuk rilis bertahap, prosesnya mudah: sekitar setiap dua minggu, rilis baru dibuat, yang selaras dengan dasar pengukuran yang sama seperti rilis Blaze internal Google. Karena jadwal rilis yang cepat, kami tidak melakukan backport perubahan apa pun ke rilis rolling.
Untuk rilis LTS, prosedur dan kebijakan di bawah ini akan diikuti:
- Tentukan commit dasar pengukuran untuk rilis.
- Untuk rilis LTS utama baru, commit dasar pengukuran adalah HEAD dari cabang utama.
- Untuk rilis minor atau patch, commit dasar pengukuran adalah HEAD dari versi terbaru saat ini dari rilis LTS yang sama.
- Buat cabang rilis dengan nama
release-<version>
dari commit dasar pengukuran. - Backport perubahan melalui PR ke cabang rilis.
- Komunitas dapat menyarankan commit tertentu untuk di-backport dengan membalas
"
@bazel-io flag
" pada masalah atau PR GitHub yang relevan untuk menandainya sebagai potensi pemblokir rilis, tim Bazel akan melakukan triage dan memutuskan apakah akan melakukan backport commit. - Hanya commit yang kompatibel dengan versi lama di cabang utama yang dapat di-backport, perubahan kecil tambahan untuk menyelesaikan konflik penggabungan dapat diterima.
- Komunitas dapat menyarankan commit tertentu untuk di-backport dengan membalas
"
Melakukan backport perubahan menggunakan Masalah Permintaan Cherry-Pick untuk pengelola Bazel.
Pemelihara Bazel dapat meminta untuk memilih commit tertentu ke cabang rilis. Proses ini dimulai dengan membuat permintaan pengambilan penting di GitHub. Berikut cara melakukannya.
- Buka permintaan pilih
- Isi detail permintaan
- Judul: Berikan judul yang ringkas dan deskriptif untuk permintaan.
- ID commit: Masukkan ID commit yang ingin Anda pilih. Jika ada beberapa commit, pisahkan commit tersebut dengan koma.
- Kategori: Tentukan kategori permintaan.
- Peninjau: Untuk beberapa peninjau, pisahkan ID GitHub mereka dengan koma.
- Menetapkan pencapaian
- Temukan bagian "Milestone", lalu klik setelannya.
- Pilih pemblokir rilis X.Y.Z yang sesuai. Tindakan ini akan memicu bot cherry-pick untuk memproses permintaan Anda untuk cabang "release-X.Y.Z".
- Mengirimkan Masalah
- Setelah semua detail diisi dan lokasi ditetapkan, kirimkan masalah.
Bot cherry-pick akan memproses permintaan dan memberi tahu jika commit memenuhi syarat untuk cherry-pick. Jika commit dapat dipilih, yang berarti tidak ada konflik penggabungan saat memilih commit, bot akan membuat permintaan pull baru. Saat permintaan pull disetujui oleh anggota tim Bazel, commit akan dipilih dan digabungkan ke cabang rilis. Untuk contoh visual permintaan cherry-pick yang telah selesai, lihat contoh ini.
Mengidentifikasi pemblokir rilis dan memperbaiki masalah yang ditemukan di cabang rilis.
- Cabang rilis diuji dengan rangkaian pengujian yang sama di postsubmit dan pipeline pengujian downstream pada Bazel CI. Tim Bazel memantau hasil pengujian cabang rilis dan memperbaiki regresi yang ditemukan.
Buat kandidat rilis baru dari cabang rilis saat semua pemblokir rilis yang diketahui telah diselesaikan.
- Kandidat rilis diumumkan di bazel-discuss, tim Bazel memantau laporan bug komunitas untuk kandidat tersebut.
- Jika pemblokir rilis baru diidentifikasi, kembali ke langkah terakhir dan buat kandidat rilis baru setelah menyelesaikan semua masalah.
- Fitur baru tidak diizinkan untuk ditambahkan ke cabang rilis setelah kandidat rilis pertama dibuat; pilihan utama terbatas untuk perbaikan penting saja. Jika cherry-pick diperlukan, pemohon harus menjawab pertanyaan berikut: Mengapa perubahan ini penting, dan apa manfaatnya yang diberikan? Berapa kemungkinan perubahan ini menyebabkan regresi?
Mendorong kandidat rilis sebagai rilis resmi jika tidak ada pemblokir rilis lebih lanjut yang ditemukan
- Untuk rilis patch, kirim rilis setidaknya dua hari kerja setelah kandidat rilis terakhir dirilis.
- Untuk rilis utama dan minor, kirim rilis dua hari kerja setelah kandidat rilis terakhir dirilis, tetapi tidak lebih awal dari satu minggu setelah kandidat rilis pertama dirilis.
- Rilis hanya didorong pada hari yang hari berikutnya adalah hari kerja.
- Rilis diumumkan di bazel-discuss, tim Bazel memantau dan menangani laporan bug komunitas untuk rilis baru.
Melaporkan regresi
Jika pengguna menemukan regresi dalam rilis Bazel baru, kandidat rilis, atau bahkan Bazel di HEAD, laporkan bug di GitHub. Anda dapat menggunakan Bazelisk untuk membagi commit pelaku dan menyertakan informasi ini dalam laporan bug.
Misalnya, jika build Anda berhasil dengan Bazel 6.1.0, tetapi gagal dengan kandidat rilis kedua 6.2.0, Anda dapat melakukan bisek melalui
bazelisk --bisect=6.1.0..release-6.2.0rc2 build //foo:bar
Anda dapat menetapkan variabel lingkungan BAZELISK_SHUTDOWN
atau BAZELISK_CLEAN
untuk menjalankan perintah bazel yang sesuai guna mereset status build jika diperlukan untuk mereproduksi masalah. Untuk mengetahui detail selengkapnya, lihat dokumentasi tentang
fitur bisek Bazelisk.
Jangan lupa untuk mengupgrade Bazelisk ke versi terbaru untuk menggunakan fitur bisect.
Kompatibilitas aturan
Jika Anda adalah penulis aturan dan ingin mempertahankan kompatibilitas dengan versi Bazel yang berbeda, lihat halaman Kompatibilitas Aturan.