Orijinal blog yayınında açıklandığı gibi, Bazel 4.0 ve sonraki sürümler iki sürüm kanalı için destek sağlar: sürekli 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ı | Son sürüm | Destek sonu |
---|---|---|---|
Bazel 8 | Daimi | Kullanıma sunulan sürüm sayfasını kontrol etme | Yok |
Bazel 7 | Etkin | 7.4.0 | Aralık 2026 |
Bazel 6 | Bakım | 6.5.0 | Aralık 2025 |
Bazel 5 | Bakım | 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.
Sürüm oluşturma
Bazel, major.minor.patch Anlamsal Sürüm Oluşturma şemasını kullanır.
- Büyük sürümler, önceki sürümle geriye dönük uyumlu olmayan özellikler içerir. Her büyük Bazel sürümü LTS sürümüdür.
- Küçük sürüm, ana daldan geriye dönük olarak taşınan özellikler ve geriye dönük hata düzeltmeleri içerir.
- Yama sürümü, kritik hata düzeltmeleri içerir.
Ayrıca, yayın öncesi sürümler, sonraki ana sürüm numarasına kısa çizgi ve tarih son eki eklenerek belirtilir.
Örneğin, her türün yeni bir sürümü aşağıdaki sürüm numaralarına neden olur:
- Büyük: 6.0.0
- Küçük: 6.1.0
- Yama: 6.1.2
- Lansman ö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:
- Devamlı: Bu ana sürüm hâlâ ön sürüm 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 küçük sürümlerine geri aktarıyor.
- Bakım: Bu ana sürüm, bakım modunda olan eski bir LTS sürümüdür. Bazel ekibi yalnızca güvenlik sorunları ve işletim sistemi uyumluluğu sorunlarına yönelik kritik hata düzeltmelerini bu LTS sürümüne geriye dönük olarak taşıyacağını taahhüt etmektedir.
- Kullanımdan kaldırıldı: Bazel ekibi artık bu ana sürüm için destek sağlamamaktadır. Tüm kullanıcılar daha yeni Bazel LTS sürümlerine geçmelidir.
Sürüm yayınlama sıklığı
Bazel, iki sürüm kanalı için düzenli olarak sürüm yayınlar.
Devamlı sürümler
- Devamlı 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.
- Devamlı sürümler, uyumsuz değişiklikler içerebilir. Zarar veren önemli değişiklikler için uyumsuz flag'ler önerilir. Uyumsuz değişikliklerin kullanıma sunulması geriye dönük uyumluluk politikamıza uygun olmalıdır.
LTS sürümleri
- Büyük sürüm: Yeni bir LTS sürümünün, HEAD'den yaklaşık 12 ayda bir çıkarılması bekleniyor. Yeni bir LTS sürümü kullanıma sunulduğunda hemen Etkin aşamaya girer ve önceki LTS sürümü Bakım aşamasına girer.
- Küçük sürüm: Etkin LTS kanalında yeni küçük sürümlerin 2 ayda bir yayınlanması beklenir.
- Yama sürümü: Kritik hata düzeltmeleri için, Etkin ve Bakım aşamalarındaki LTS sürümlerindeki yeni yama sürümlerinin isteğe bağlı olarak yayınlanması beklenir.
- Bazel LTS sürümü, 2 yıl boyunca Bakım aşamasında kaldıktan sonra Desteği sonlandırılan aşamaya girer.
Planlanan sürümler için GitHub'daki sürüm sorunlarını gözden geçirin.
Yayınlama prosedürü ve politikaları
Devamlı 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ından dolayı yeni sürümlerde yapılan değişiklikleri geri aktarmayız.
LTS sürümlerinde aşağıdaki prosedür ve politikalar uygulanır:
- Sürüm için bir referans değer gönderimi belirleyin.
- Yeni bir ana LTS sürümü için referans kaydetme, ana şubenin HEAD öğesidir.
- Küçük veya yama sürümlerinde ana hat taahhüt, aynı LTS sürümünün mevcut en son sürümünün HEAD'idir.
- Temel hatalı taahhütten
release-<version>
adlı bir sürüm dalı oluşturun. - Değişiklikleri, yayın dalına PR'ler aracılığıyla geri taşıyın.
- Topluluk, ilgili GitHub sorunlarında veya PR'lerde "
@bazel-io flag
" şeklinde bir yanıt göndererek belirli taahhütlerin geri taşınmasını önerebilir ve bu taahhütleri olası yayın engelleyiciler olarak işaretleyebilir. Bazel ekibi bunları önceliklendirir ve kaydetmeleri destekleyip desteklemeyeceklerine karar verir. - Yalnızca ana daldaki geriye dönük uyumlu taahhütler geriye aktarılabilir. Birleştirme çakışmalarını çözmek için yapılan küçük ek değişiklikler kabul edilir.
- Topluluk, ilgili GitHub sorunlarında veya PR'lerde "
Bazel bakım ekibi için Cherry-Pick Request Issue'ı kullanarak değişiklikleri geriye dönük olarak taşıyın.
Bazel yöneticileri bir sürüm dalına belirli taahhütler seçme isteğinde bulunabilir. Bu işlem, GitHub'da bir seç-al isteği oluşturularak başlatılır. Bunu nasıl yapacağınız aşağıda açıklanmıştır.
- Seçili öğeleri alma 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 kimlikleri: Seçmek istediğiniz commit'lerin kimliklerini girin. Birden fazla taahhüt varsa bunları virgülle ayırın.
- Kategori: İsteğin kategorisini belirtin.
- Yorumcular: Birden fazla yorumcu varsa GitHub kimliklerini virgülle ayırın.
- Ara hedefi ayarlama
- "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, "release-X.Y.Z" şubesi için isteğinizi işlemesi amacıyla cherry-pick bot'unu tetikler.
- Sorunu gönderme
- Tüm bilgileri girdikten ve ara hedefi belirledikten sonra sorunu gönderin.
Seçmeli alma botu isteği işler ve taahhütlerin seçmeli alma işlemine uygun olup olmadığını bildirir. Taahhütler seç-al yapılabiliyorsa (yani taahhüt seçerken birleştirme çakışması yoksa) bot yeni bir çekme isteği oluşturur. Alma isteği Bazel ekibinin bir üyesi tarafından onaylandığında, taahhütler özenle seçilir ve sürüm dalıyla birleştirilir. Tamamlanmış bir kiraz toplama isteğinin görsel bir örneği için bu örneğe bakın.
Sürüm yayınlamayı engelleyen sorunları tespit edin ve sürüm dalında bulunan sorunları düzeltin.
- Sürüm dalı, Bazel CI'de postsubmit ve aşağı akış test ardışık düzeninde aynı test paketiyle test edilir. Bazel ekibi, sürüm dalının test sonuçlarını izler ve bulunan tüm gerileme sorunlarını 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.
- Yayın adayı bazel-talk bölümünde duyurulur, Bazel ekibi aday için topluluk hata raporlarını takip eder.
- Yeni sürüm yayınlamayı engelleyen öğeler 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 özelliklerin eklenmesine izin verilmez; kritik kararlar yalnızca kritik düzeltmelerle sınırlıdır. Belirli bir veri kümesini seçmek gerekiyorsa istek sahibi aşağıdaki soruları yanıtlamalıdır: Bu değişiklik neden kritik ve ne gibi avantajlar sağlıyor? Bu değişikliğin gerileme oluşturma olasılığı nedir?
Başka yayın engelleyicisi 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.
- Büyük ve küçük yayınlarda, son yayın adayı yayınlandıktan iki iş günü sonra ancak yayını, ilk yayın adayı yayınlandıktan en fazla bir hafta sonra yayınlayın.
- Sürüm yalnızca bir sonraki günün iş günü olduğu bir günde yayınlanır.
- Sürüm bazel-discuss'te duyurulur. Bazel ekibi, yeni sürümle ilgili topluluktaki hata raporlarını izler ve ele alır.
Regresyonları raporlayın
Kullanıcılar yeni bir Bazel sürümünde regresyon, yayın adayı ve hatta HEAD kısmında Bazel bulursa lütfen GitHub'da hata bildiriminde bulunun. Suçlu kaydetme işlemini bölmek ve bu bilgiyi hata raporuna eklemek için Bazelisk'i kullanabilirsiniz.
Örneğin, derlemeniz Bazel 6.1.0 ile başarılı oluyor ancak ikinci sürüm adayı 6.2.0 ile başarısız oluyorsa şu komutu kullanarak ikiye bölebilirsiniz:
bazelisk --bisect=6.1.0..release-6.2.0rc2 build //foo:bar
Sorunun yeniden oluşturulması için gerektiğinde derleme durumunu sıfırlamak amacıyla BAZELISK_SHUTDOWN
veya BAZELISK_CLEAN
ortam değişkenini karşılık gelen bazel komutlarını çalıştıracak şekilde ayarlayabilirsiniz. Daha fazla bilgi için Bazelisk bisect özelliği ile ilgili dokümanlara göz atın.
Bölme özelliğini kullanmak için Bazelisk'i en son 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ına göz atın.