Kural Uyumluluğu

Sorun bildir Kaynağı göster

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

  1. Bağlı olduğu bir özellik, HEAD konumunda Bazel'den kaldırıldığından kural, gelecekteki LTS sürümleriyle uyumluluğu engeller.
  2. Kullandığı bir özellik yalnızca yeni Bazel LTS sürümlerinde kullanılabildiğinden bu kural, mevcut veya eski LTS sürümleriyle uyumluluğu kesintiye uğratır.

Bu arada, kuralın kendisi de kullanıcılarına uyumsuz değişiklikler gönderebilir. Bazel'deki zarar veren değişikliklerle birlikte, kural sürümünü ve Bazel sürümünü yükseltmek Bazel kullanıcıları için genellikle hayal kırıklığına yol açabilir. Bu sayfada, kullanıcıların Bazel'i ve kuralları yükseltmesini kolaylaştırmak için kural yazarlarının Bazel ile kural uyumluluğunu nasıl korumaları gerektiği ele alınmaktadır.

Yönetilebilir taşıma süreci

Bazel'in her sürümü ile kuralın her sürümü arasında uyumluluğu garanti etmek elbette mümkün olmasa da amacımız, taşıma sürecinin Bazel kullanıcıları için yönetilebilir halde kalmasını sağlamaktır. Yönetilebilir 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 uyumsuz değişiklikleri işlemesine 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 yükseltmesi gerektiğinden, rules_foo 1.x + Bazel 4.x sürümünden rules_foo 2.x + Bazel 5.x'e geçiş, yönetilebilir olarak kabul edilmez.
  • Kullanıcılar ana Bazel sürümünü değiştirmeden önce rules_foo'yu 2.x'ten 3.x'e, ardından Bazel'i 5.x'ten 6.x'e yükseltebileceğinden, rules_foo 2.x + Bazel 5.x'ten rules_foo 3.x + Bazel 6.x'e geçiş, yönetilebilir olarak kabul edilir.
kurallar_foo1.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ü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ınız 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 adresindeki kural, en son Bazel LTS sürümüyle uyumlu olmalıdır.
  3. HEAD bölümündeki kural, HEAD adresindeki Bazel ile uyumlu olmalıdır. Bunun için şunları yapabilirsiniz:
  4. Kuralın en son ana sürümü, en son 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.'lere ulaşmak, 4. ve 5. adımlara ulaşılmasına olanak tanıdığından en önemli görevdir. doğal olarak.

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

  • Geriye dönük uyumlu özelliklerin en son LTS sürümüne geri taşınmasını isteyin. Daha ayrıntılı bilgi için sürüm 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, en son Bazel LTS sürümüyle uyumluluğu kaybetmeden HEAD'deki Bazel ile uyumlu olmayan değişiklikler için taşınabilmeli ve yeni Bazel özelliklerini kullanabilmelidir.