Kural Uyumluluğu

. Sorun bildirin Kaynağı göster Gece · 7,3 · 7,2 · 7,1 · 7,0 · 6,5

Bazel Starlark kuralları, şu iki senaryoyu bulabilirsiniz:

  1. Kural, LTS kanalında sunulan bir özellik olduğu için gelecekteki LTS sürümleriyle uyumluluğu bozuyor , HEAD konumunda Bazel'den kaldırıldı.
  2. Kural, mevcut veya daha eski LTS sürümleriyle uyumluluğu bozduğu için Bu özellik yalnızca yeni Bazel LTS sürümlerinde kullanılabilir.

Bu arada kural, kullanıcılarına olur. Bazel'de zarar veren değişikliklerle birleştirildiğinde kural sürümünü yükseltme ve Bazel sürümü, genellikle Bazel kullanıcılarının canını sıkar. Bu sayfasında, kuralların yazarlarının Bazel ile kural uyumluluğunu nasıl kullanıcıların Bazel'i ve kuralları yükseltmesini kolaylaştıracaktır.

Yönetilebilir taşıma süreci

Her ne kadar ekip dinamikleri arasında uyumluluğu garanti etmek her sürümünü ele aldığımızdan emin olmak istiyoruz. Bu doğrultuda, taşıma işlemi Bazel kullanıcıları tarafından yönetilebilir olmaya devam eder. Yönetilebilir bir taşıma işlem, kullanıcıların yeni sürüme geçmek zorunda kalmadıkları bir süreç olarak kuralının ana sürümü ile Bazel'in ana sürümünü aynı anda kullanmanızı sağlar. Böylece, Böylece kullanıcılar, tek seferde bir kaynaktan alınan uyumsuz değişiklikleri ele alabilir.

Örneğin, aşağıdaki uyumluluk matrisiyle:

  • rules_foo 1.x + Bazel 4.x'ten rules_foo 2.x + Bazel 5.x'e Bu nedenle, kullanıcılar uygulamanızın ana sürümünü yeni sürüme geçirmesi kuralları_foo ve Bazel'i birlikte kullanabilirsiniz.
  • rules_foo 2.x + Bazel 5.x'ten rules_foo 3.x + Bazel 6.x'e Kullanıcılar ilk olarak rules_foo değerini 2.x'ten Ana Bazel sürümünü değiştirmeden 3.x kullanın, ardından Bazel'i 5.x'ten yeni sürüme geçirin. 6,x.
kuralları_foo 1.x kuralları_foo 2.x kuralları_foo 3.x HEAD
Bazel 4.x
Bazel 5.x
Bazel 6,x
HEAD

❌: Ana kural sürümünün hiçbir sürümü Bazel LTS ile uyumlu değil kullanabilirsiniz.

✅: Kuralın en az bir sürümü Bazel LTS sürümü.

En iyi uygulamalar

Bazel kurallarının yazarları olarak, kullanıcılar için yönetilebilir bir taşıma süreci sağlayabilirsiniz aşağıdaki en iyi uygulamalardan yararlanabilirsiniz:

  1. Kural şuna uygun olmalıdır: Anlamsal Sürüm oluşturma: aynının alt sürümleri geriye dönük uyumludur.
  2. HEAD konumundaki kural en son Bazel LTS sürümüyle uyumlu olmalıdır.
  3. HEAD konumundaki kural, HEAD konumundaki Bazel ile uyumlu olmalıdır. Bunu başarmak için de CANNOT TRANSLATE
  4. Kuralın en son ana sürümü, en son sürümle uyumlu olmalıdır Bazel LTS sürümü.
  5. Kuralın yeni ana sürümü, son Bazel LTS ile uyumlu olmalıdır yeni sürüm kuralının önceki ana sürümü tarafından desteklenir.

4. ve 3. adımların gerçekleştirilmesini sağladığından en önemli görevdir. 5.c doğal olarak.

Hem HEAD'deki Bazel hem de en son sürüm ile uyumluluğu kolaylaştırmak için Bazel LTS sürümünde kural yazarları şunları yapabilir:

  • Geriye dönük uyumlu özelliklerin en yeni LTS sürümüne geri aktarılmasını isteme hakkında bilgi edinmek için yayınlama sürecine göz atın. inceleyebilirsiniz.
  • bazel_features parametresini kullanma özelliğini kullanabilirsiniz.

Genel olarak, önerilen yaklaşımlarla kuralların taşıma işlemi Bazel uyumsuz değişiklikleri ve olmadan HEAD adresindeki yeni Bazel özelliklerini kullanın Bazel LTS'nin en son sürümüyle uyumluluk azaldı.