Kural Uyumluluğu

Sorun bildirin Kaynağı göster

Bazel Starlark kuralları, aşağıdaki iki senaryoda Bazel LTS sürümleriyle uyumluluğu bozabilir:

  1. Kural, bağımlı olduğu bir özellik HEAD'deki Bazel'den kaldırıldığı için gelecekteki LTS sürümleriyle uyumluluğu bozar.
  2. Kural, bağımlı olduğu bir özellik yalnızca yeni Bazel LTS sürümlerinde kullanılabildiğinden mevcut veya eski LTS sürümleriyle uyumluluğu ihlal eder.

Bu arada kural, kullanıcıları için uyumsuz değişiklikler de gönderebilir. Bazel'deki değişiklikleri bozmakla birlikte, kural sürümünün ve Bazel sürümünün yükseltilmesi Bazel kullanıcıları için genellikle hayal kırıklığı yaratan bir kaynak olabilir. Bu sayfada, kullanıcıların Bazel'i ve kuralları yeni sürüme geçirmelerini kolaylaştırmak için kural yazarlarının Bazel ile kural uyumluluğunu nasıl sürdürmeleri gerektiği ele alınmaktadır.

Yönetilebilir taşıma süreci

Her Bazel sürümü ile kuralın her sürümü arasında uyumluluğu garanti etmek açık bir şekilde mümkün olmasa da, amacımız taşıma sürecinin Bazel kullanıcıları için yönetilebilir kalmasını sağlamaktır. Yönetilebilir bir taşıma süreci, kullanıcıların kuralın ana sürümünü ve Bazel'in ana sürümünü aynı anda yükseltmeye zorlanmadığı ve böylece kullanıcıların tek seferde bir kaynaktan gelen uyumsuz değişiklikleri ele almasına olanak tanıyan bir süreç 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 yeni sürüme geçirmesi gerektiğinden, rules_foo 1.x + Bazel 4.x sürümünden rules_foo 2.x ve Bazel 5.x'e taşınması yönetilebilir kabul edilmez.
  • rules_foo 2.x + Bazel 5.x'ten rules_foo 3.x + Bazel 6.x'e taşıma, kullanıcılar tarafından ana Bazel sürümünü değiştirmeden rules_foo'u 2.x'ten 3.x'e yükseltip ardından 5.x'ten 6.x'e yükseltebildiği için yönetilebilir kabul edilir.
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 sürümüyle uyumlu değildir.

✅: Kuralın en az bir sürümü, Bazel LTS sürümünün son sürümüyle uyumludur.

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, Anlamsal Sürüm Oluşturma'ya uygun olmalıdır: Aynı ana sürümü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 şunları yapabilirsiniz:
  4. Kuralın en yeni ana sürümü, en son Bazel LTS sürümüyle uyumlu olmalıdır.
  5. Kuralın yeni ana sürümü, kuralın önceki ana sürümü tarafından desteklenen son Bazel LTS sürümüyle uyumlu olmalıdır.

4. ve 5. hedeflere ulaşılmasına olanak tanıdığından 2. ve 3. adımlara ulaşmak en önemli görevdir. doğal olarak.

Hem HEAD'deki Bazel hem de en son Bazel LTS sürümüyle uyumluluğu daha kolay hale getirmek için kural yazarları şunları yapabilir:

  • Geriye dönük uyumlu özelliklerin en son LTS sürümüne geri aktarılmasını isteyin. Daha fazla bilgi için yayınlama sürecine göz atın.
  • Bazel özellik algılaması için bazel_features kullanın.

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