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 yayın sayfasını kontrol etme | Yok |
| Bazel 9 | Etkin | 9.3.2 | 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, geriye dönük uyumlu hata düzeltmeleri ve ana daldan geri taşınan özellikler 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ının sonuna 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 henüz yayın öncesi aşamasındadı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 ekler.
- 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 geriye dönük olarak 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 sürümler
- 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 temel kayıt, ana dalın HEAD'idir.
- Küçük veya yama sürümleri için temel kayıt, aynı LTS sürümünün mevcut en yeni sürümünün HEAD'idir.
- Temel kayıttan
release-<version>adında 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 geriye dönük olarak taşınmasını önerebilir. Bazel ekibi bunları önceliklendirir ve commit'lerin geriye dönük olarak 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 taşıyın.
Bazel yöneticileri, belirli commit'lerin bir yayın dalına seçilerek eklenmesini isteyebilir. 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) (Commit kimlikleri): Seçerek almak istediğiniz commit'lerin 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 engelleyicileri seçin. Bu işlem, cherry-pick botunu "release-X.Y.Z" dalı için isteğinizi işleme almaya yönlendirir.
- Sorunu gönderme
- Tüm ayrıntılar doldurulup 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 neden olma 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 bildiriminde bulunun. 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.