Bazel Kilit Dosyası

. Sorun bildirin Kaynağı göster Gece · 7,3 · 7,2 · 7,1 · 7,0 · 6,5

Bazel'deki kilit dosyası özelliği, belirli sürümlerin veya bağımlılıklarını ifade eder. Google bunu, modül çözünürlüğünün ve genişletmenin sonucunu depolayarak değerlendirme. Kilit dosyası, yeniden oluşturulabilir derlemeleri teşvik ederek tutarlılık sağlar ortamları için değerlidir. Ayrıca, ekibinizin mümkün olan en yüksek değeri teslim edebilmesi Projede değişiklik olmadığında çözüm sürecini atlamak için Bazel ve bildirmeyi konuştuk. Ayrıca, kilit dosyası, uygulamanızın harici kitaplıklarda beklenmedik güncellemeler veya zarar veren değişiklikler, dolayısıyla da ortaya çıkabilecek risklerden birini ana hatlarıyla ortaya koyduk.

Kilit Dosyası Oluşturma

Kilit dosyası, şu adla çalışma alanı kökü altında oluşturulur: MODULE.bazel.lock Derleme işlemi sırasında oluşturulur veya güncellenir. özellikle de modül çözümlemesi ve uzantı değerlendirmesinden sonra. Kilit dosyası MODULE dosyası, bayraklar ve öğeler de dahil olmak üzere projenin geçersiz kılma işlemleri ve diğer alakalı bilgiler. Daha da önemlisi, bağımlılıklarını (derlemenin mevcut çağrısına dahil edilir).

Projede bağımlılıklarını etkileyen değişiklikler gerçekleştiğinde kilit dosyası otomatik olarak güncellenir. Bu, kilit dosyasının mevcut iş modelinde ihtiyaç duyulan belirli bağımlılıklar ve projenin teslimatlarına dair doğru bir temsili ve bildirmeyi konuştuk.

Kilit Dosyası Kullanımı

Kilit dosyası, flag ile kontrol edilebilir --lockfile_mode - proje durumu, başlangıç seviyesinden farklı olduğunda Bazel'in davranışını kilit dosyası olarak gönderin. Kullanılabilir modlar şunlardır:

  • update (Varsayılan): Proje durumu, kilit dosyasıyla eşleşiyorsa kilit dosyasından hemen döndürülür. Aksi halde ve kilit dosyası, mevcut çözünürlük yürütülür ve durumu.
  • error: Proje durumu kilit dosyasıyla eşleşirse çözüm sonucu kilit dosyasından döndürülür. Aksi takdirde, Bazel ortaya çıkarmanıza yardımcı olabilir. Bu mod özellikle projenizin bağımlılıklarının devam etmesini sağlamak istediğinizde değiştirilmez ve farklılıklar hata olarak değerlendirilir.
  • off: Kilit dosyası hiç kontrol edilmemiştir.

Kilit Dosyasının Avantajları

Kilit dosyası çeşitli avantajlar sunar ve çeşitli şekillerde kullanılabilir:

  • Tekrarlanabilir derlemeler. Belirli sürümleri veya bağımlılıkları yakalayarak kilit dosyası, derlemelerin yeniden üretilebilir olmasını sağlar. farklı ortamlarda ve zamanla. Geliştiriciler de tutarlı ve öngörülebilir sonuçlar elde etmesine yardımcı olur.

  • Etkili çözünürlük atlama. Kilit dosyası, Bazel'in proje bağımlılıklarında herhangi bir değişiklik olmaması halinde geri dönüp bakarsınız. Bu yöntem, özellikle de çok fazla zaman alabilir.

  • Kararlılık ve risk azaltma. Kilit dosyası, uygulamanın her zaman harici kitaplıklardaki değişiklikleri veya beklenmedik güncellemeleri önleme amaçlıdır. Ölçüt versiyonlara odaklanmak, hataya neden olma riski azaltılmış olması anlamına gelir.

Kilit Dosyası İçerikleri

Kilit dosyası, uygulamanızın ve projenin durumu değişti. Ayrıca projeyi inşa etme sürecinin sonucunu da durumuna getirin. Kilit dosyası iki ana bölümden oluşur:

  1. Modül çözünürlüğü girişleri, moduleFileHash, flags ve localOverrideHashes ve moduleDepGraph.
  2. Kilit dosyası, her modül uzantısını etkileyen girişler içerir ve transitiveDigest ile gösterilir ve bu uzantıyı çalıştırmanın çıktısı generatedRepoSpecs olarak adlandırıldı

Burada, kilit dosyasının yapısını her bölüm için açıklama:

{
  "lockFileVersion": 1,
  "moduleFileHash": "b0f47b98a67ee15f9.......8dff8721c66b721e370",
  "flags": {
    "cmdRegistries": [
      "https://bcr.bazel.build/"
    ],
    "cmdModuleOverrides": {},
    "allowedYankedVersions": [],
    "envVarAllowedYankedVersions": "",
    "ignoreDevDependency": false,
    "directDependenciesMode": "WARNING",
    "compatibilityMode": "ERROR"
  },
  "localOverrideHashes": {
    "bazel_tools": "b5ae1fa37632140aff8.......15c6fe84a1231d6af9"
  },
  "moduleDepGraph": {
    "<root>": {
      "name": "",
      "version": "",
      "executionPlatformsToRegister": [],
      "toolchainsToRegister": [],
      "extensionUsages": [
        {
          "extensionBzlFile": "extension.bzl",
          "extensionName": "lockfile_ext"
        }
      ],
      ...
    }
  },
  "moduleExtensions": {
    "//:extension.bzl%lockfile_ext": {
      "transitiveDigest": "oWDzxG/aLnyY6Ubrfy....+Jp6maQvEPxn0pBM=",
      "generatedRepoSpecs": {
        "hello": {
          "bzlFile": "@@//:extension.bzl",
          ...
        }
      }
    }
  }
}

Modül Dosya Karması

moduleFileHash, MODULE.bazel dosya içeriğinin karma değerini gösterir. Eğer bu dosyada herhangi bir değişiklik olursa karma değeri farklı olur.

Bayraklar

Flags nesnesi, çözümleme sonucunu etkileyebilecek tüm işaretleri depolar.

Yerel Geçersiz Kılma Karmaları

Kök modül local_path_overrides içeriyorsa bu bölümde karma değer depolanır MODULE.bazel dosyasının yerel depodaki değerini gösterir. Değişikliklerin izlenmesine olanak tanır kim olduğunu öğreneceğiz.

Modül Bağımlılık Grafiği

moduleDepGraph, olabilir. Tüm modüllerin bağımlılık grafiğini gereken çeşitli faktörler bulunur.

Modül Uzantıları

moduleExtensions bölümü, yalnızca kullanılan uzantıları içeren bir haritadır veya daha önce çağrılmış olan (uzantılar hariç) artık kullanılmıyor. Başka bir deyişle, uzantı kullanılmıyorsa artık bağımlılık grafiğinde, moduleExtensions haritası.

Bu haritadaki her giriş, kullanılan bir uzantıya karşılık gelir ve içerir. Her giriş için karşılık gelen değer alakalı bilgilere ulaşabilirsiniz:

  1. transitiveDigest uzantı uygulamasının özeti ve özeti geçişli .bzl dosyalarıdır.
  2. generatedRepoSpecs, bu uzantıyı geçerli giriştir.

Uzantı sonuçlarını etkileyebilecek diğer bir faktör de kullanımlarıdır. Kilit dosyasında depolanmasa da, karşılaştırma sırasında kullanımlar dikkate alınır kilit dosyasındakiyle uzantının mevcut durumunu değiştirin.

En İyi Uygulamalar

Kilit dosyası özelliğinin avantajlarından en iyi şekilde yararlanmak için aşağıdakileri en iyi şekilde değerlendirin: uygulamalar:

  • Kilit dosyasını proje bağımlılıklarındaki değişiklikleri yansıtacak şekilde düzenli olarak güncelleyin. yapılandırma. Bu, sonraki derlemelerin en önemli güncel ve doğru bir bağımlılık dizisi oluşturmanız gerekir.

  • Ortak çalışmayı kolaylaştırmak için kilit dosyasını sürüm kontrolüne dahil edin tüm ekip üyelerinin aynı kilit dosyasına erişmesini sağlayarak tutarlı geliştirme ortamları belirlemenize yardımcı olur.

Bu en iyi uygulamaları izleyerek kilit dosyasını etkili bir şekilde Bu da daha verimli, güvenilir ve iş birliğine olanak tanıyan iş akışlarıyla başlayalım.