Bazel'de önemli değişiklikler yapmamız kaçınılmaz. Tasarımlarımızı değiştirmemiz ve düzgün çalışmayan şeyleri düzeltmemiz gerekecek. Ancak topluluğun ve Bazel ekosisteminin bu değişime ayak uydurabilmesini sağlamamız gerekiyor. Bu amaçla, Bazel projesi geriye dönük uyumluluk politikası benimsemiştir. Bu dokümanda, Bazel katkıda bulunanlarının bu politikaya uymak için Bazel'de önemli bir değişiklik yapma süreci açıklanmaktadır.
GitHub sorunu
Bazel deposunda GitHub sorunu oluşturun. Örneği inceleyin.
Şunları yapmanızı öneririz:
Başlık, işaretin adıyla başlar (işaret adı
incompatible_
ile başlar).incompatible-change
etiketini ekleyin.Açıklamada değişikliğin açıklaması ve ilgili tasarım belgelerinin bağlantısı yer alır.
Açıklamada, kullanıcılara kodlarını nasıl güncellemeleri gerektiğini açıklayan bir taşıma tarifi bulunur. İdeal olarak, değişiklik mekanik olduğunda bir taşıma aracının bağlantısını ekleyin.
Açıklamada, taşıma işlemini gerçekleştirmeyen kullanıcıların göreceği hata mesajı örneği yer alır. Bu, GitHub sorununun arama motorlarında daha kolay bulunmasını sağlar. Hata mesajının yararlı ve uygulanabilir olduğundan emin olun. Mümkünse hata mesajında uyumsuz işaretin adı yer almalıdır.
Taşıma aracı için Buildifier'a katkıda bulunabilirsiniz.
BUILD
, WORKSPACE
ve .bzl
dosyalarına otomatik düzeltmeler uygulayabilir.
Ayrıca uyarıları da bildirebilir.
Uygulama
Bazel'de yeni bir işaret oluşturun. Varsayılan değer false olmalıdır. Yardım metni, GitHub sorununun URL'sini içermelidir. İşaret adı incompatible_
ile başladığından meta veri etiketleri gerektirir:
metadataTags = {
OptionMetadataTag.INCOMPATIBLE_CHANGE,
},
İşaretin kısa bir özetini, gönderim açıklamasına ekleyin.
Aşağıdaki forma RELNOTES:
değerini de ekleyin:
RELNOTES: --incompatible_name_of_flag has been added. See #xyz for details
Kodun dokümanlarla tutarsız olduğu bir commit aralığı olmaması için commit, ilgili dokümanları da güncellemelidir. Belgelerimizin sürümü bulunduğundan, dokümanlarda yapılan değişiklikler istemeden erken yayınlanmayacaktır.
Etiketler
Taahhüt birleştirildikten ve uyumsuz değişiklik uygulanmaya hazır hale geldikten sonra GitHub sorununa migration-ready
etiketini ekleyin.
İşaretle ilgili bir sorun bulunursa ve kullanıcıların henüz taşınması beklenmiyorsa:
İşaretleri kaldırın migration-ready
.
İşareti bir sonraki büyük sürümde etkinleştirmeyi planlıyorsanız soruna "breaking-change-X.0" etiketini ekleyin.
Depoları güncelleme
Bazel CI, Bazel@HEAD + Downstream'da önemli projelerin bir listesini test eder. Bunların çoğu genellikle diğer Bazel projelerinin bağımlılıklarıdır. Bu nedenle, daha geniş bir topluluk için taşıma işleminin engelini kaldırmak amacıyla bu projeleri taşımak önemlidir. Bu projelerin taşıma durumunu izlemek için bazelisk-plus-incompatible-flags
ardışık düzenini kullanabilirsiniz.
Bu ardışık düzenin işleyiş şeklini buradan inceleyebilirsiniz.
Geliştirici destek ekibimiz migration-ready
etiketini izler. Bu etiketi GitHub sorununa eklediğinizde aşağıdaki işlemleri yaparlar:
GitHub sorununda, başarısızlıkların ve taşınması gereken alt projelerin listesini izlemek için bir yorum oluşturun (örneke bakın)
Uyumlu olmayan değişikliğiniz nedeniyle bozulan her alt akış projesinin sahiplerini bilgilendirmek için GitHub sorunları oluşturun (örnek)
Hedef yayın tarihinden önce tüm sorunların giderildiğinden emin olmak için takip edin
Aşağı akış ardışık düzeninde projeleri taşıma işlemi uyumsuz değişiklik yazarının sorumluluğu DEĞİLDİR. Ancak taşıma işlemini hızlandırmak ve hem Bazel kullanıcıları hem de Bazel Yeşil Ekibi için işleri kolaylaştırmak amacıyla aşağıdakileri yapabilirsiniz.
Alttaki projeleri düzeltmek için PR gönderin.
Taşımayla ilgili yardım için Bazel topluluğuna (ör. Bazel Kuralları Yazarları SIG) ulaşın.
Bayrak ters dönüyor
İşaretin varsayılan değerini true olarak çevirmeden önce lütfen şunlardan emin olun:
Ekosistemdeki temel depolar taşınır.
bazelisk-plus-incompatible-flags
ardışık düzeninde bayrak,The following flags didn't break any passing Bazel team owned/co-owned projects
altında görünecektir.Kontrol listesindeki tüm sorunlar düzeltildi/kapalı olarak işaretlenir.
Kullanıcıların endişeleri ve soruları giderildi.
İşaret Bazel'de açılmaya hazır olduğunda ancak Google'daki dahili taşıma işleminde engellendiğinde, bayrak çevirme engelini kaldırmak için dahili blazerc
dosyasında bayrak değerini false olarak ayarlamayı lütfen düşünün. Bu sayede, Bazel kullanıcılarının mümkün olan en kısa sürede varsayılan olarak yeni davranışı kullanmasını sağlayabiliriz.
İşaretin varsayılan değerini true olarak değiştirirken lütfen:
- Commit açıklamasında
RELNOTES[INC]
'ü aşağıdaki biçimde kullanın:RELNOTES[INC]: --incompatible_name_of_flag is flipped to true. See #xyz for details
Commit açıklamasının geri kalanına ek bilgiler ekleyebilirsiniz. - GitHub sorununun, birleştirme işlemi tamamlandığında kapatılması için açıklamada
Fixes #xyz
kullanın. - Dokümanları inceleyin ve gerekirse güncelleyin.
- Bayrağın kaldırılmasını takip etmek için yeni bir sorun
#abc
oluşturun.
İşareti kaldırma
HEAD'da işaret değiştirildikten sonra zaman içinde Bazel'den kaldırılır. Uyumlu değil işaretini kaldırmayı planladığınızda:
- Uyumlu olmayan önemli bir değişiklik söz konusuysa kullanıcıların taşıma işlemini tamamlaması için daha fazla zaman tanıyabilirsiniz. İdeal olarak işaret, en az bir büyük sürümde kullanılabilir olmalıdır.
- İşareti kaldıran commit için açıklamada
Fixes #abc
kullanın. Böylece, commit birleştirildiğinde GitHub sorunu kapatılır.