İlk blog yazısında duyurulduğu gibi, Bazel 4.0 ve sonraki sürümler iki yayın kanalını destekler: sürekli yayınlar ve uzun süreli destek (LTS) yayınları. Bu sayfada, Bazel'in yayın modeliyle ilgili en son bilgiler yer almaktadır.
Destek matrisi
| LTS sürümü | Destek aşaması | En yeni sürüm | Artık desteklenmiyor |
|---|---|---|---|
| Bazel 10 | Daimi | Aşamalı yayın sayfasını kontrol etme | Yok |
| Bazel 9 | Etkin | 9.2.0 | Aralık 2028 |
| Bazel 8 | Bakım | 8.8.1 | Aralık 2027 |
| Bazel 7 | Bakım | 7.7.1 | 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, eski bir sürüm için bakım yaması daha yakın zamanda yayınlanmış olsa bile her zaman en yüksek anlamsal sürümü gösterir.
Yayınlanan sürümler
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 olarak 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 özellikler içerir.
- Yama sürümü, önemli hata düzeltmeleri içerir.
Ayrıca, yayın öncesi sürümler, bir sonraki ana sürüm numarasına tire ve tarih soneki eklenerek belirtilir.
Örneğin, her türden yeni bir sürüm şu sürüm numaralarıyla sonuçlanır:
- 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 büyük Bazel sürümü için dört destek aşaması vardır:
- Rolling: Bu ana sürüm henüz yayın öncesi aşamasındadır. Bazel ekibi, HEAD'den rolling sürümler yayınlar.
- Etkin: Bu ana sürüm, şu anda etkin olan LTS sürümüdür. Bazel ekibi, önemli özellikleri ve hata düzeltmelerini küçük sürümlerine geri aktarır.
- Bakım: Bu ana sürüm, bakım modunda eski bir LTS sürümüdür. Bazel ekibi, yalnızca güvenlik sorunları ve işletim sistemi uyumluluğu sorunlarıyla ilgili kritik hata düzeltmelerini bu LTS sürümüne geriye dönük olarak taşımayı garanti eder.
- Desteği sonlandırıldı: Bazel ekibi artık bu ana sürüm için destek sağlamıyor. Tüm kullanıcılar daha yeni Bazel LTS sürümlerine geçmelidir.
Yayın sıklığı
Bazel, iki sürüm kanalı için düzenli olarak sürümler yayınlar.
Aşamalı yayınlar
- Aşamalı 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.
- Aşamalı yayınlarda uyumsuz değişiklikler gönderilebilir. Uyumsuz işaretler, büyük ve uyumsuz değişiklikler için önerilir. Uyumsuz değişikliklerin kullanıma sunulması, geriye dönük uyumluluk politikamıza uygun şekilde yapılmalıdır.
LTS sürümleri
- Ana sürüm: Yaklaşık olarak her 12 ayda bir HEAD'den yeni bir LTS sürümünün oluşturulması 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.
- Küçük sürüm: Etkin LTS kanalındaki yeni küçük sürümlerin 2 ayda bir yayınlanması beklenir.
- Yama sürümü: Etkin ve bakım aşamasındaki LTS sürümleri için yeni yama sürümlerinin, kritik hata düzeltmeleri için talep üzerine yayınlanması beklenmektedir.
- Bazel LTS sürümü, 2 yıl boyunca Bakım aşamasında kaldıktan sonra Destek Sonlandırıldı aşamasına girer.
Planlanan sürümler için lütfen GitHub'daki sürüm sorunlarımızı inceleyin.
Yayınlama prosedürü ve politikaları
Aşamalı sürümlerde 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, değişiklikleri kademeli yayınlara geri aktarmıyoruz.
LTS sürümlerinde aşağıdaki prosedür ve politikalar uygulanır:
- Yayın için temel bir commit belirleyin.
- Yeni bir ana LTS sürümünde, temel commit ana dalın HEAD'idir.
- Küçük veya yama sürümü için temel commit, aynı LTS sürümünün mevcut en son sürümünün HEAD'idir.
- Temel alınan commit'ten
release-<version>adında bir yayın dalı oluşturun. - PR'ler aracılığıyla değişiklikleri yayın dalına geri aktarın.
- Topluluk, ilgili GitHub sorunlarına veya PR'lere "
@bazel-io flag" yanıtını vererek belirli commit'lerin geri taşınmasını önerebilir. Bu yanıt, commit'leri potansiyel yayın engelleyiciler olarak işaretler. Bazel ekibi, bu commit'leri önceliklendirir ve geri taşınıp taşınmayacağına karar verir. - Yalnızca ana daldaki geriye dönük uyumlu işlemeler geri aktarılabilir. Birleştirme çakışmalarını çözmek için yapılan ek küçük değişiklikler kabul edilebilir.
- Topluluk, ilgili GitHub sorunlarına veya PR'lere "
Bazel bakımcıları için Cherry-Pick Request Issue'yu kullanarak değişiklikleri geriye aktarın.
Bazel'in bakımını yapanlar, belirli commit'lerin bir yayın dalına seçilmesini isteyebilir. Bu süreç, 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.
- Cherry-pick isteğini açın.
- İstek ayrıntılarını doldurun
- Başlık: İsteğe kısa ve açıklayıcı bir başlık girin.
- Commit ID(s) [Onay Kimlikleri]: Cherry-pick yapmak istediğiniz onayların kimliklerini girin. Birden fazla onay varsa bunları virgülle ayırın.
- Kategori: İsteğin kategorisini belirtin.
- İnceleyenler: Birden fazla inceleyen varsa GitHub kimliklerini virgülle ayırın.
- Ara hedefi ayarlayın.
- "Dönüm noktası" bölümünü bulup ayarı tıklayın.
- Uygun X.Y.Z sürümünü engelleyen sorunları seçin. Bu işlem, "release-X.Y.Z" dalı için isteğinizi işlemek üzere seçme botunu tetikler.
- Sorunu Gönderme
- Tüm ayrıntılar doldurulup kilometre taşı ayarlandıktan sonra sorunu gönderin.
Cherry-pick bot, isteği işleme alır ve commit'lerin cherry-pick için uygun olup olmadığını bildirir. Taahhütler cherry-pickable ise (yani taahhüt cherry-pick yapılırken birleştirme çakışması yoksa) bot yeni bir çekme isteği oluşturur. Çekme isteği Bazel ekibinin bir üyesi tarafından onaylandığında, işlemeler seçilerek yayın dalıyla birleştirilir. Tamamlanmış bir cherry-pick isteğinin görsel örneği için bu örneğe bakın.
Yayınlanmayı engelleyen sorunları belirleyin ve yayın dalında bulunan sorunları düzeltin.
- Sürüm dalı, Bazel CI'da postsubmit ve downstream test pipeline'da aynı test paketiyle test edilir. Bazel ekibi, yayın dalının test sonuçlarını izler ve bulunan tüm gerilemeleri düzeltir.
Bilinen tüm sürüm engelleyicileri çözüldüğünde sürüm dalından yeni bir sürüm adayı oluşturun.
- Sürüm adayı bazel-discuss listesinde duyurulur. Bazel ekibi, aday için topluluk tarafından gönderilen hata raporlarını izler.
- Yeni yayın engelleme sorunları tespit edilirse son adıma geri dönün ve tüm sorunları çözdükten sonra yeni bir yayın adayı oluşturun.
- İlk sürüm adayı oluşturulduktan sonra sürüm dalına yeni özellikler eklenemez. Seçerek birleştirme işlemleri yalnızca kritik düzeltmelerle sınırlıdır. If a cherry-pick is needed, the requester must answer the following questions: Why is this change critical, and what benefits does it provide? Bu değişikliğin gerilemeye yol açma olasılığı nedir?
Başka yayın engelleyici bulunmazsa sürüm adayını resmi sürüm olarak yayınlayın.
- 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 sürümlerde, son sürüm adayı yayınlandıktan iki iş günü sonra sürümü yayınlayın. Ancak ilk sürüm adayı yayınlandıktan bir hafta geçmeden sürümü yayınlamayın.
- Yayın yalnızca sonraki günün iş günü olduğu günlerde gönderilir.
- Yeni sürüm, bazel-discuss listesinde duyurulur. Bazel ekibi, yeni sürümle ilgili topluluk hata raporlarını izler ve ele alır.
Regresyonları bildirme
Bir kullanıcı yeni Bazel sürümünde, sürüm adayında veya hatta HEAD'deki Bazel'de bir regresyon bulursa lütfen GitHub'da hata bildirin. Suçlu commit'i ikiye bölmek için Bazelisk'i kullanabilir ve bu bilgileri hata raporuna ekleyebilirsiniz.
Örneğin, derlemeniz Bazel 6.1.0 ile başarılı oluyor ancak 6.2.0'ın ikinci sürüm adayıyla başarısız oluyorsa aşağıdaki komutla ikiye bölme işlemi yapabilirsiniz:
bazelisk --bisect=6.1.0..release-6.2.0rc2 build //foo:bar
Sorunu yeniden üretmek gerekirse derleme durumunu sıfırlamak için BAZELISK_SHUTDOWN veya BAZELISK_CLEAN ortam değişkenini ayarlayarak ilgili Bazel komutlarını çalıştırabilirsiniz. Daha fazla bilgi için Bazelisk bisect özelliği ile ilgili dokümanlara 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.