Bazel kayıt otoriteleri

Sorun bildirme Kaynağı görüntüleme Nightly · 8.1 · 8.0 · 7.5 · 7.4

Bzlmod, Bazel kayıtlarından (Bazel modüllerinin veritabanları) bilgi isteyerek bağımlılıklarını keşfeder. Bazel yalnızca bir tür kayıt defteri (dizin kayıt defteri) yerel dizinleri veya belirli bir biçimi izleyen statik HTTP sunucularını destekler.

Dizin kayıt otoritesi

Dizin kayıt otoritesi, ana sayfaları, bakım verenleri, her bir sürümün MODULE.bazel dosyası ve her bir sürümün kaynağının nasıl alınacağı da dahil olmak üzere bir modül listesi hakkında bilgi içeren yerel bir dizin veya statik bir HTTP sunucusudur. Kaynak arşivlerin kendisini sunması gerekmez.

Dizin sicil dairesi şu biçimde olmalıdır:

  • /bazel_registry.json: Kayıt defterinin meta verilerini içeren isteğe bağlı bir JSON dosyası.
  • /modules: Bu kayıt defterindeki her modül için bir alt dizin içeren bir dizin
  • /modules/$MODULE: Modülün her sürümü için $MODULE adlı bir alt dizin ve bu modülün meta verilerini içeren metadata.json dosyasını içeren bir dizin.
  • /modules/$MODULE/$VERSION: Aşağıdaki dosyaları içeren bir dizin:
    • MODULE.bazel: Bu modül sürümünün MODULE.bazel dosyası. Bunun, kaynak arşivdeki MODULE.bazel dosyası olmadığını, Bazel'in harici bağımlılık çözümü sırasında okunan MODULE.bazel dosyası olduğunu unutmayın (kayıt defteri dışında bir geçersiz kılma olmadığı sürece).
    • source.json: Bu modül sürümünün kaynağının nasıl alınacağına dair bilgiler içeren bir JSON dosyası
    • patches/: Yalnızca source.json "arşiv" türüne sahip olduğunda kullanılan, yama dosyalarını içeren isteğe bağlı bir dizin
    • overlay/: Yer paylaşımı dosyalarını içeren isteğe bağlı bir dizin. Yalnızca source.json "arşiv" türüne sahip olduğunda kullanılır.

bazel_registry.json

bazel_registry.json, kayıt defterinin tamamı için geçerli meta verileri belirten isteğe bağlı bir dosyadır. Dosyada aşağıdaki alanlar bulunabilir:

  • mirrors: Kaynak arşivler için kullanılacak aynaların listesini belirten bir dize dizisi.
    • Yansıtılan URL, yansıtılan URL'nin ve modülün source.json dosyası tarafından protokol olmadan belirtilen kaynak URL'sinin bir araya getirilmesidir. Örneğin, bir modülün kaynak URL'si https://foo.com/bar/baz ise ve mirrors, ["https://mirror1.com/", "https://example.com/mirror2/"] içeriyorsa Bazel'in sırayla deneyeceği URL'ler https://mirror1.com/foo.com/bar/baz, https://example.com/mirror2/foo.com/bar/baz ve son olarak orijinal kaynak URL'nin kendisi https://foo.com/bar/baz olur.
  • module_base_path: source.json dosyasında local_path türüne sahip modüllerin temel yolunu belirten bir dize

metadata.json

metadata.json, modülle ilgili bilgileri içeren isteğe bağlı bir JSON dosyasıdır. Bu dosya aşağıdaki alanları içerir:

  • versions: Her biri bu kayıt defterinde bulunan modülün bir sürümünü belirten bir dize dizisi. Bu dizi, modül dizininin alt öğeleriyle eşleşmelidir.
  • yanked_versions: Bu modülün geri çekilen sürümlerini belirten bir JSON nesnesi. Anahtarlar, kaldırılacak sürümler, değerler ise sürümün neden kaldırıldığının açıklamaları (ideal olarak daha fazla bilginin bağlantısını içeren) olmalıdır.

BCR için metadata.json dosyasında daha fazla bilgi gerektiğini unutmayın.

source.json

source.json, bir modülün belirli bir sürümünün nasıl getirileceği hakkında bilgi içeren zorunlu bir JSON dosyasıdır. Bu dosyanın şeması, varsayılan olarak archive olan type alanına bağlıdır.

  • type archive ise (varsayılan) bu modül sürümü bir http_archive repo kuralı tarafından desteklenir ve belirli bir URL'den bir arşiv indirilerek ve içeriği ayıklanarak getirilir. Aşağıdaki alanları destekler:
    • url: Kaynak arşivin URL'si olan bir dize
    • integrity: Arşivin Alt Kaynak Bütünlüğü sağlama toplamı olan bir dize
    • strip_prefix: Kaynak arşivi ayıklanırken kaldırılacak dizin ön eki olan bir dize
    • overlay: Ayıklanan arşivin üzerine yerleştirilecek yer paylaşımı dosyalarını içeren bir JSON nesnesi. Yama dosyaları /modules/$MODULE/$VERSION/overlay dizininde bulunur. Anahtarlar yer paylaşımı dosya adları, değerler ise yer paylaşımı dosyalarının bütünlük sağlama toplamıdır. Yer paylaşımları, yama dosyalarından önce uygulanır.
    • patches: Ayıklanan arşive uygulanacak yama dosyalarını içeren bir JSON nesnesi. Yama dosyaları /modules/$MODULE/$VERSION/patches dizininde bulunur. Anahtarlar, yama dosyası adları, değerler ise yama dosyalarının bütünlük sağlamasıdır. Yamalar, yer paylaşımı dosyalarından sonra uygulanır.
    • patch_strip: Bir sayı; Unix patch işlevinin --strip bağımsız değişkeniyle aynıdır.
    • archive_type: İndirilen dosyanın arşiv türü olan bir dize (http_archive'daki type ile aynıdır).
  • type git_repository ise bu modül sürümü bir git_repository repo kuralı tarafından desteklenir ve bir Git kod deposu klonlanarak getirilir.
    • Şu alanlar desteklenir ve doğrudan temel git_repository repo kuralına yönlendirilir: remote, commit, shallow_since, tag, init_submodules, verbose ve strip_prefix.
  • type local_path ise bu modül sürümü, local_repository depo kuralı tarafından desteklenir ve yerel diskteki bir dizinle sembolik olarak bağlanır. Aşağıdaki alanı destekler:
    • path: Deponun yerel yolu. Aşağıdaki şekilde hesaplanır:
      • path mutlak bir yolsa olduğu gibi kalır
      • path göreli bir yolsa ve module_base_path mutlak bir yolsa <module_base_path>/<path> olarak çözümlenir.
      • Hem path hem de module_base_path göreli yolsa <registry_path>/<module_base_path>/<path> olarak çözülür. Kayıt otoritesi yerel olarak barındırılmalı ve --registry=file://<registry_path> tarafından kullanılmalıdır. Aksi takdirde Bazel hata verir.

Bazel Merkezi Kaydı

https://bcr.bazel.build/ adresindeki Bazel Merkezi Kaydı (BCR), bazelbuild/bazel-central-registry GitHub deposu tarafından desteklenen içeriklerin yer aldığı bir dizin kaydıdır. İçeriğine https://registry.bazel.build/ adresindeki web ön ucunu kullanarak göz atabilirsiniz.

BCR, Bazel topluluğu tarafından yönetilir ve katkıda bulunanların çekme isteğinde bulunmasına izin verilir. BCR katkı yönergelerine bakın.

BCR, normal bir dizin sicil dairesi biçimini izlemenin yanı sıra her modül sürümü için bir presubmit.yml dosyası (/modules/$MODULE/$VERSION/presubmit.yml) gerektirir. Bu dosya, bu modül sürümünün geçerliliğini kontrol etmek için kullanabileceğiniz birkaç temel derleme ve test hedefini belirtir. BCR'nin CI ardışık düzenlerinde de modüller arasında birlikte çalışabilirliği sağlamak için bu yöntem kullanılır.

Kayıt otoritelerini seçme

Tekrarlanabilir Bazel işareti --registry, modül isteğinde bulunulacak kayıt defteri listesini belirtmek için kullanılabilir. Böylece projenizi, bağımlılıklarını üçüncü taraf veya dahili kayıt defterinden alacak şekilde ayarlayabilirsiniz. Önceki kayıtlar önceliklidir. Kolaylık sağlamak için projenizin .bazelrc dosyasına --registry işaretlerinin listesini ekleyebilirsiniz.

Kayıt deponuz GitHub'da barındırılıyorsa (örneğin, bazelbuild/bazel-central-registry'ün çatalı olarak) --registry değerinizin raw.githubusercontent.com altında ham bir GitHub adresine ihtiyacı vardır. Örneğin, my-org çatalının main dalında --registry=https://raw.githubusercontent.com/my-org/bazel-central-registry/main/ değerini ayarlarsınız.

--registry işareti kullanıldığında Bazel Merkezi Kaydı varsayılan olarak kullanılamaz ancak --registry=https://bcr.bazel.build işareti eklenerek tekrar eklenebilir.