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:
- Modül çözünürlüğü girişleri,
moduleFileHash
,flags
velocalOverrideHashes
vemoduleDepGraph
. - 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:
transitiveDigest
uzantı uygulamasının özeti ve özeti geçişli .bzl dosyalarıdır.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.