Orijinal blog yayınında duyurulduğu üzere Bazel 4.0 ve sonraki sürümler, iki sürüm kanalını destekler: sıralı sürümler ve uzun süreli destek (LTS) sürümleri. Bu sayfada, Bazel'in sürüm modeliyle ilgili en güncel bilgiler yer almaktadır.
Destek matrisi
| LTS sürümü | Destek aşaması | En yeni sürüm | Artık desteklenmiyor |
|---|---|---|---|
| Bazel 10 | Daimi | Kademeli sürüm sayfasını kontrol etme | Yok |
| Bazel 9 | Etkin | 9.3.1 | Aralık 2028 |
| Bazel 8 | Bakım | 8.8.2 | Aralık 2027 |
| Bazel 7 | Bakım | 7.7.2 | Aralık 2026 |
| Bazel 6 | Kullanımdan kaldırıldı | 6.6.0 | Aralık 2025 |
| Bazel 5 | Kullanımdan kaldırıldı | 5.4.1 | Ocak 2025 |
| Bazel 4 | Kullanımdan kaldırıldı | 4.2.4 | Ocak 2024 |
Tüm Bazel LTS sürümlerini GitHub'daki sürüm sayfasında bulabilirsiniz. GitHub'daki "En yeni" rozeti, daha eski bir sürüm için daha yakın zamanda bir bakım yaması yayınlanmış olsa bile her zaman en yüksek semantik sürümü gösterir.
Yayınlanan sürüm oluşturma
Bazel, major.minor.patch Anlamsal Sürüm Oluşturma şemasını kullanır.
- Ana sürüm, önceki sürümle geriye dönük uyumlu olmayan özellikler içerir. Her ana Bazel sürümü bir LTS sürümüdür.
- Ara sürüm, ana daldan geri taşınan geriye dönük uyumlu hata düzeltmeleri ve özellikleri içerir.
- Yama sürümü, kritik hata düzeltmeleri içerir.
Ayrıca, yayın öncesi sürümler, bir sonraki ana sürüm numarasına kısa çizgi ve tarih soneki eklenerek belirtilir.
Örneğin, her türden yeni bir sürüm aşağıdaki sürüm numaralarıyla sonuçlanır:
- Büyük: 6.0.0
- Küçük: 6.1.0
- Yama: 6.1.2
- Yayın öncesi: 7.0.0-pre.20230502.1
Destek aşamaları
Her ana Bazel sürümü için dört destek aşaması vardır:
- Sürekli: Bu ana sürüm hâlâ yayın öncesi aşamadadır. Bazel ekibi, HEAD'den sürekli sürümler yayınlar.
- Etkin: Bu ana sürüm, mevcut etkin LTS sürümüdür. Bazel ekibi, önemli özellikleri ve hata düzeltmelerini alt sürümlerine geri taşır.
- Bakım: Bu ana sürüm, bakım modundaki eski bir LTS sürümüdür. Bazel ekibi, yalnızca güvenlik sorunları ve işletim sistemi uyumluluğu sorunları için kritik hata düzeltmelerini bu LTS sürümüne geri taşımayı taahhüt eder.
- Desteği sonlandırıldı: Bazel ekibi artık bu ana sürüm için destek sunmuyor. Tüm kullanıcıların daha yeni Bazel LTS sürümlerine geçmesi gerekiyor.
Sürüm sıklığı
Bazel, iki sürüm kanalı için düzenli olarak sürüm yayınlar.
Sürekli yayınlar
- Sürekli sürümler, Google Blaze sürümüyle koordine edilir ve yaklaşık iki haftada bir HEAD'den yayınlanır. Bu, bir sonraki Bazel LTS sürümünün önizlemesidir.
- Sürekli sürümler, uyumsuz değişiklikler içerebilir. Uyumsuz işaretler, önemli zarar veren değişiklikler için önerilir. Uyumsuz değişikliklerin kullanıma sunulması, geriye dönük uyumluluk politikamıza uygun olmalıdır.
LTS sürümleri
- Ana sürüm: Yeni bir LTS sürümünün yaklaşık her 12 ayda bir HEAD'den kesilmesi beklenir. Yeni bir LTS sürümü yayınlandığında hemen Etkin aşamasına girer ve önceki LTS sürümü Bakım aşamasına girer.
- Alt sürüm: Etkin LTS kanalındaki yeni alt sürümlerin 2 ayda bir yayınlanması beklenir.
- Yama sürümü: Etkin ve bakım aşamalarındaki LTS sürümleri için yeni yama sürümlerinin, kritik hata düzeltmeleri için talep üzerine yayınlanması beklenir.
- Bazel LTS sürümü, 2 yıl boyunca Bakım aşamasında kaldıktan sonra Desteği Sonlandırıldı aşamasına girer.
Planlanan sürümler için lütfen Github'daki sürüm sorunlarımıza göz atın.
Yayınlama prosedürü ve politikaları
Sürekli sürümler için süreç basittir: Yaklaşık iki haftada bir, Google'ın dahili Blaze sürümüyle aynı temele uygun yeni bir sürüm oluşturulur. Hızlı yayın planı nedeniyle, sürekli yayınlara herhangi bir değişiklik eklemiyoruz.
LTS sürümleri için aşağıdaki prosedür ve politikalar uygulanır:
- Sürüm için referans bir commit belirleyin.
- Yeni bir ana LTS sürümü için referans taahhüt, ana dalın HEAD'idir.
- Küçük veya yama sürümleri için referans taahhüt, aynı LTS sürümünün mevcut en yeni sürümünün HEAD'idir.
- Temel taahhütten
release-<version>adına bir sürüm dalı oluşturun. - PR'ler aracılığıyla değişiklikleri yayın dalına geri taşıma
- Topluluk, ilgili GitHub sorunlarını veya PR'lerini potansiyel sürüm engelleyiciler olarak işaretlemek için "
@bazel-io flag" yanıtını vererek belirli commit'lerin geri taşınmasını önerebilir. Bazel ekibi bunları önceliklendirir ve commit'lerin geri taşınıp taşınmayacağına karar verir. - Yalnızca ana daldaki geriye dönük uyumlu commit'ler geri taşınabilir. Birleştirme çakışmalarını çözmek için ek küçük değişiklikler yapılabilir.
- Topluluk, ilgili GitHub sorunlarını veya PR'lerini potansiyel sürüm engelleyiciler olarak işaretlemek için "
Bazel geliştiricileri için Cherry-Pick Request Issue'yu kullanarak değişiklikleri geriye dönük olarak uygulayın.
Bazel geliştiricileri, belirli commit'leri bir yayın dalına seçerek eklemeyi talep edebilir. Bu işlem, GitHub'da bir cherry-pick isteği oluşturularak başlatılır. Bunu nasıl yapacağınız aşağıda açıklanmıştır.
- Kiraz toplama isteğini açın
- İstek ayrıntılarını doldurun
- Başlık: İstek için kısa ve açıklayıcı bir başlık girin.
- Commit ID(s) (İşleme kimlikleri): Seçerek almak istediğiniz işleme kimliklerini girin. Birden fazla commit varsa bunları virgülle ayırın.
- Kategori: Talebin kategorisini belirtin.
- İnceleyenler: Birden fazla inceleyen varsa GitHub kimliklerini virgülle ayırın.
- Ara hedefi belirleyin
- "Ara hedef" bölümünü bulun ve ayarı tıklayın.
- Uygun X.Y.Z sürüm engelleyicilerini seçin. Bu işlem, cherry-pick bot'u tetikleyerek "release-X.Y.Z" dalı için isteğinizi işleme alır.
- Sorunu gönderme
- Tüm ayrıntılar doldurulduktan ve aşama belirlendikten sonra sorunu gönderin.
Cherry-pick botu isteği işler ve commit'lerin cherry-pick için uygun olup olmadığını bildirir. İşlemeler seçilerek alınabiliyorsa, yani işleme seçilerek alınırken birleştirme çakışması yoksa bot yeni bir pull isteği oluşturur. Pull isteği Bazel ekibinin bir üyesi tarafından onaylandığında commit'ler seçilir ve yayın dalıyla birleştirilir. Tamamlanmış bir seçerek alma isteğinin görsel örneği için bu örneğe bakın.
Sürüm engelleyicileri belirleme ve sürüm dalında bulunan sorunları düzeltme
- Sürüm dalı, Bazel CI'da postsubmit ve downstream test pipeline'da aynı test paketiyle test edilir. Bazel ekibi, sürüm dalının test sonuçlarını izler ve bulunan tüm gerilemeleri düzeltir.
Bilinen tüm sürüm engelleyiciler çözüldüğünde sürüm dalından yeni bir sürüm adayı oluşturun.
- Sürüm adayı bazel-discuss sayfasında duyurulur ve Bazel ekibi, aday için topluluk hata raporlarını izler.
- Yeni sürüm engelleyiciler tespit edilirse son adıma geri dönün ve tüm sorunları çözdükten sonra yeni bir sürüm adayı oluşturun.
- İlk sürüm adayı oluşturulduktan sonra sürüm dalına yeni özellikler eklenmesine izin verilmez. Kiraz toplama (cherry-pick) işlemi yalnızca kritik düzeltmelerle sınırlıdır. Seçerek alma işlemi gerekiyorsa talep eden kişi şu soruları yanıtlamalıdır: Bu değişiklik neden kritik ve ne gibi avantajlar sağlıyor? Bu değişikliğin gerilemeye yol açma olasılığı nedir?
Başka bir engelleyici bulunmazsa sürüm adayını resmi sürüm olarak yayınlama
- Yama sürümleri için, son sürüm adayı yayınlandıktan en az iki iş günü sonra sürümü yayınlayın.
- Ana ve alt sürümler için, son sürüm adayı çıktıktan iki iş günü sonra, ancak ilk sürüm adayı çıktıktan en az bir hafta sonra sürümü yayınlayın.
- Sürüm yalnızca bir sonraki günün iş günü olduğu günlerde yayınlanır.
- Sürüm, bazel-discuss sayfasında duyurulur. Bazel ekibi, yeni sürümle ilgili topluluk hata raporlarını izler ve ele alır.
Gerilemeleri bildirme
Bir kullanıcı yeni bir Bazel sürümünde, sürüm adayında veya HEAD'deki Bazel'de bir gerileme bulursa lütfen GitHub'da hata bildirin. Bazelisk'i kullanarak soruna neden olan commit'i bulabilir ve bu bilgiyi hata raporuna ekleyebilirsiniz.
Örneğin, derlemeniz Bazel 6.1.0 ile başarılı olur ancak 6.2.0'ın ikinci sürüm adayıyla başarısız olursa bisect işlemini şu şekilde yapabilirsiniz:
bazelisk --bisect=6.1.0..release-6.2.0rc2 build //foo:bar
Sorunu yeniden oluşturmak için derleme durumunu sıfırlamanız gerekiyorsa ilgili bazel komutlarını çalıştırmak üzere BAZELISK_SHUTDOWN veya BAZELISK_CLEAN ortam değişkenini ayarlayabilirsiniz. Daha fazla bilgi için Bazelisk bisect özelliği ile ilgili belgelere göz atın.
Bisect özelliğini kullanmak için Bazelisk'i en yeni sürüme yükseltmeyi unutmayın.
Kural uyumluluğu
Kural yazarıysanız ve farklı Bazel sürümleriyle uyumluluğu korumak istiyorsanız lütfen Kural Uyumluluğu sayfasını inceleyin.