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, 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 sırada kuralın kendisi de kullanıcıları için uyumsuz değişiklikler gönderebilir. Bazel'deki önemli değişikliklerle birlikte kural sürümünü ve Bazel sürümünü yükseltmek, Bazel kullanıcıları için genellikle can sıkıcı olabilir. 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ş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:

  • Kullanıcıların rules_foo ve Bazel'in ana sürümünü aynı anda yükseltmesi gerektiğinden, rules_foo 1.x + Bazel 4.x'ten rules_foo 2.x + Bazel 5.x'e geçişin yönetilebilir olduğu kabul edilmez.
  • 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 rules_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 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, aşağıdaki en iyi uygulamaları izleyerek kullanıcılar için yönetilebilir bir taşıma süreci sağlayabilirsiniz:

  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'deki kural, HEAD'deki Bazel ile uyumlu olmalıdır. Bunun için şunu yapabilirsiniz:
  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 5. hedeflere ulaşmanızı sağladığı için 2. ve 3. hedeflere ulaşmak en önemli görevdir. 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 ö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.