Model Rilis

Laporkan masalah Lihat sumber Nightly · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

Seperti yang diumumkan di postingan blog asli, Bazel 4.0 dan versi yang lebih tinggi memberikan dukungan untuk dua jalur rilis: rilis berkelanjutan dan rilis dukungan jangka panjang (LTS). Halaman ini mencakup informasi terbaru tentang model rilis Bazel.

Matriks dukungan

Rilis LTS Tahap dukungan Versi terbaru Akhir dukungan
Bazel 9 Berkelanjutan Memeriksa halaman rilis bertahap T/A
Bazel 8 Aktif 8.3.0 Desember 2027
Bazel 7 Pemeliharaan 7.6.1 Des 2026
Bazel 6 Pemeliharaan 6.5.0 Desember 2025
Bazel 5 Tidak digunakan lagi 5.4.1 Jan 2025
Bazel 4 Tidak digunakan lagi 4.2.4 Jan 2024

Semua rilis LTS Bazel dapat ditemukan di halaman rilis di GitHub.

Pembuatan versi rilis

Bazel menggunakan skema major.minor.patch Pembuatan Versi Semantik.

  • 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-back-port dari cabang utama.
  • Rilis patch berisi perbaikan bug penting.

Selain itu, versi pra-rilis ditunjukkan dengan menambahkan tanda hubung dan akhiran tanggal ke nomor versi utama berikutnya.

Misalnya, rilis baru setiap jenis akan menghasilkan nomor versi berikut:

  • 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 tahap 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 dalam rilis minornya.
  • Pemeliharaan: Versi utama ini adalah rilis LTS lama dalam mode pemeliharaan. Tim Bazel hanya berjanji untuk mem-backport perbaikan bug penting untuk masalah keamanan dan masalah kompatibilitas OS ke rilis LTS ini.
  • Tidak digunakan lagi: Tim Bazel tidak lagi memberikan dukungan untuk versi utama ini, semua pengguna harus bermigrasi ke rilis LTS Bazel yang lebih baru.

Frekuensi 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 rilis LTS Bazel berikutnya.
  • Rilis bergulir dapat mengirimkan perubahan yang tidak kompatibel. Flag yang tidak kompatibel direkomendasikan untuk perubahan besar yang merusak, meluncurkan perubahan yang tidak kompatibel harus mengikuti kebijakan kompatibilitas mundur kami.

Rilis LTS

  • Rilis utama: Rilis LTS baru diperkirakan akan dibuat dari HEAD kira-kira setiap 12 bulan. Setelah rilis LTS baru tersedia, rilis tersebut 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 setiap 2 bulan.
  • Rilis patch: Versi patch baru untuk rilis LTS dalam tahap Aktif dan Pemeliharaan diharapkan dirilis sesuai permintaan untuk perbaikan bug penting.
  • Rilis LTS Bazel memasuki tahap Tidak Digunakan lagi setelah berada di tahap Pemeliharaan selama 2 tahun.

Untuk rilis yang direncanakan, lihat masalah rilis kami di GitHub.

Prosedur & kebijakan rilis

Untuk rilis bergulir, prosesnya mudah: setiap dua minggu, rilis baru dibuat, yang selaras dengan dasar yang sama seperti rilis Blaze internal Google. Karena jadwal rilis yang cepat, kami tidak melakukan backport perubahan apa pun ke rilis berkelanjutan.

Untuk rilis LTS, prosedur dan kebijakan di bawah ini diikuti:

  1. Tentukan commit dasar untuk rilis.
    • Untuk rilis LTS utama baru, commit dasar adalah HEAD dari cabang utama.
    • Untuk rilis minor atau patch, commit dasar adalah HEAD dari versi LTS terbaru saat ini dari rilis LTS yang sama.
  2. Buat cabang rilis dengan nama release-<version> dari commit dasar.
  3. Lakukan backport perubahan melalui PR ke cabang rilis.
    • Komunitas dapat menyarankan commit tertentu untuk di-back-port dengan membalas "@bazel-io flag" pada masalah atau PR GitHub yang relevan untuk menandainya sebagai potensi penghambat rilis, tim Bazel akan memilahnya dan memutuskan apakah akan melakukan back-port commit.
    • Hanya commit yang kompatibel dengan rilis lama di cabang utama yang dapat di-back-port, perubahan kecil tambahan untuk menyelesaikan konflik penggabungan dapat diterima.
  4. Mengirim kembali perubahan menggunakan Masalah Permintaan Cherry-Pick untuk pemelihara Bazel.

    • Pengelola Bazel dapat meminta untuk memilih commit tertentu ke branch rilis. Proses ini dimulai dengan membuat permintaan cherry-pick di GitHub. Berikut cara melakukannya.

      1. Buka permintaan cherry-pick
      2. 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 dengan koma.
        • Kategori: Tentukan kategori permintaan.
        • Peninjau: Untuk beberapa peninjau, pisahkan ID GitHub mereka dengan koma.
      3. Menetapkan pencapaian
        • Temukan bagian "Tonggak pencapaian", lalu klik setelan.
        • Pilih penghambat rilis X.Y.Z yang sesuai. Tindakan ini memicu bot cherry-pick untuk memproses permintaan Anda untuk cabang "release-X.Y.Z".
      4. Kirim Masalah
        • Setelah semua detail diisi dan tonggak pencapaian 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, maka bot akan membuat permintaan pull baru. Jika permintaan penarikan disetujui oleh anggota tim Bazel, commit akan dipilih dan digabungkan ke branch rilis. Untuk contoh visual permintaan seleksi yang telah diselesaikan, lihat contoh ini.

  5. Identifikasi penghambat rilis dan perbaiki masalah yang ditemukan di cabang rilis.

    • Cabang rilis diuji dengan test suite yang sama di postsubmit dan pipeline pengujian downstream di Bazel CI. Tim Bazel memantau hasil pengujian cabang rilis dan memperbaiki regresi yang ditemukan.
  6. 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 teridentifikasi, kembali ke langkah terakhir dan buat kandidat rilis baru setelah menyelesaikan semua masalah.
    • Fitur baru tidak boleh ditambahkan ke cabang rilis setelah kandidat rilis pertama dibuat; cherry-pick hanya terbatas pada perbaikan penting. Jika cherry-pick diperlukan, pemohon harus menjawab pertanyaan berikut: Mengapa perubahan ini penting, dan apa manfaat yang diberikannya? Seberapa besar kemungkinan perubahan ini menyebabkan regresi?
  7. Dorong kandidat rilis sebagai rilis resmi jika tidak ada lagi masalah yang menghalangi rilis

    • Untuk rilis patch, dorong rilis setidaknya dua hari kerja setelah kandidat rilis terakhir keluar.
    • Untuk rilis mayor dan minor, dorong rilis dua hari kerja setelah kandidat rilis terakhir keluar, tetapi tidak lebih awal dari satu minggu setelah kandidat rilis pertama keluar.
    • Rilis hanya didorong pada hari di mana 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, harap laporkan bug di GitHub. Anda dapat menggunakan Bazelisk untuk membagi dua commit bermasalah 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 bisect 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 biseksi Bazelisk.

Jangan lupa untuk mengupgrade Bazelisk ke versi terbaru untuk menggunakan fitur biseksi.

Kompatibilitas aturan

Jika Anda adalah penulis aturan dan ingin mempertahankan kompatibilitas dengan berbagai versi Bazel, lihat halaman Kompatibilitas Aturan.