Kural Uyumluluğu

Sorun bildirin Kaynağı göster Gece · 7,4 , 7.3 · 7.2 · 7.1 · 7.0 · 6.5

Bazel Starlark kuralları, şu iki senaryoyu bulabilirsiniz:

  1. Kural, bağlı olduğu bir özellik HEAD'deki Bazel'den kaldırıldığı için gelecekteki LTS sürümleriyle uyumluluğu bozar.
  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 sayfada, kural yazarlarının kullanıcıların Bazel ve kuralları yükseltmesini kolaylaştırmak için kural uyumluluğunu Bazel ile nasıl sağlaması gerektiği açıklanmaktadı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şlemi, kullanıcıların kuralın ana sürümünü ve Bazel'in ana sürümünü aynı anda yükseltmeye zorlanmadığı, böylece kullanıcıların uyumsuz değişiklikleri tek bir kaynaktan tek seferde ele almasına olanak tanıyan bir işlem olarak tanımlanır.

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

  • rules_foo 1.x + Bazel 4.x'ten rules_foo 2.x + Bazel 5.x'e yapılan taşıma işleminden 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.
rules_foo 1.x kuralları_foo 2.x rules_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 sürümüyle uyumlu değildir.

✅: 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'deki 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 büyük sürümü, en son Bazel LTS sürümüyle uyumlu olmalıdır.
  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 Bazel LTS sürümü ile uyumluluğu korumayı kolaylaştırmak için 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 özellik algılama için bazel_features özelliğini kullanın.

Genel olarak, önerilen yaklaşımlarla kurallar, Bazel ile uyumlu olmayan değişiklikler için taşınabilir ve en son Bazel LTS sürümüyle uyumluluğu kaybetmeden HEAD'deki yeni Bazel özelliklerinden yararlanabilir.