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. Bağımlı olduğu bir özellik, HEAD konumundaki Bazel'den kaldırıldığından kural, gelecekteki LTS sürümleriyle uyumluluğu keser.
  2. Gereken bir özellik yalnızca daha yeni Bazel LTS sürümlerinde kullanılabildiğinden kural, mevcut veya eski LTS sürümleriyle uyumluluğu engeller.

Kuralın kendisi de kullanıcıları için uyumlu olmayan değişiklikler gönderebilir. Bazel'da zarar veren değişikliklerle birleştirildiğinde kural sürümünü ve Bazel sürümünü yükseltmek genellikle Bazel kullanıcıları için hayal kırıklığına neden olabilir. Bu sayfada, kuralların yazarlarının Bazel'ı ve kuralları yeni sürüme geçirmeyi kolaylaştırmak için Bazel'la kural uyumluluğunu nasıl sürdürmeleri gerektiği ele alınmaktadır.

Yönetilebilir taşıma süreci

Bazel'ın her sürümü ile her sürümü arasındaki uyumluluğu garanti etmek elbette mümkün olmasa da hedefimiz Bazel kullanıcıları için taşıma sürecinin yönetilebilir kalmasını sağlamaktır. Yönetilebilir taşıma süreci, kullanıcıların kuralın ana sürümünü ve Bazel'ın ana sürümünü aynı anda yükseltmeye zorlanmadığı ve böylece her seferinde bir kaynaktan uyumsuz değişiklikleri ele almalarına olanak tanıyan bir süreç olarak tanımlanır.

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

  • Kurallar_foo 1.x + Bazel 4.x sürümünden kural_foo 2.x + Bazel 5.x'e geçiş, kullanıcıların aynı anda kurallar_foo ve Bazel'ın ana sürümünü yükseltmesi gerektiği için yönetilebilir olarak kabul edilmez.
  • Kullanıcılar ilk olarak Bazel sürümünü değiştirmeden kuralları_foo'yu 2.x'ten 3.x'e, ardından Bazel'ı ise 5.x'ten 6.x'e yükselttiğinden, rules_foo 2.x ve Bazel 5.x'ten rules_foo 3.x'e ve Bazel 6.x'e geçiş, yönetilebilir olarak 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 en son sürümüyle uyumludur.

En iyi uygulamalar

Bazel'ın kural 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, Semantik Sürüm'e uymalıdır: Aynı ana sürümün alt sürümleri geriye dönük olarak uyumludur.
  2. HEAD içindeki kural, son Bazel LTS sürümüyle uyumlu olmalıdır.
  3. HEAD kuralının, HEAD adresindeki Bazel ile uyumlu olması gerekir. Bunu yapmak için:
  4. Kuralın son ana sürümü, Bazel LTS sürümüyle uyumlu olmalıdır.
  5. Kuralın yeni bir 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.

2. ve 3. Hedefe Ulaşma, 4. ve 5. aşamaların gerçekleştirilmesini sağladığından en önemli görevdir. doğal olarak.

Kurallar yazarları, hem HEAD kısmındaki Bazel hem de en son Bazel LTS sürümüyle uyumluluğun korunmasını kolaylaştırmak için:

  • Geriye dönük uyumlu özelliklerin en son LTS sürümüne taşınmasını isteyin. Daha ayrıntılı bilgi için yayınlama sürecine göz atın.
  • Bazel özelliklerini algılamak için bazel_features özelliğini kullanın.

Genel olarak, önerilen yaklaşımlar sayesinde kurallar, Bazel ile uyumlu olmayan değişiklikler için geçiş yapabilmeli ve en son Bazel LTS sürümüyle uyumluluğu kaybetmeden, HEAD bölümüne yeni Bazel özelliklerini kullanabilmelidir.