Bazel kayıt otoriteleri

Sorun bildir Kaynağı görüntüle Nightly · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

Bzlmod, Bazel kayıtlarından (Bazel modüllerinin veritabanları) bilgi isteyerek bağımlılıkları keşfeder. Bzlmod şu anda yalnızca belirli bir biçime uyan dizin kayıtlarını (yerel dizinler veya statik HTTP sunucuları) desteklemektedir.

Dizin kaydı

Dizin kayıt otoritesi, bir modül listesiyle ilgili bilgileri (ana sayfaları, bakımcıları, her sürümün MODULE.bazel dosyası ve her sürümün kaynağının nasıl getirileceği dahil) içeren yerel bir dizin veya statik bir HTTP sunucusudur. Özellikle, kaynak arşivlerin kendisini sunması gerekmez.

Dizin kaydı aşağıdaki biçimde olmalıdır:

  • /bazel_registry.json: Kayıt defteri için meta veriler içeren bir JSON dosyası örneği:
    • mirrors: Kaynak arşivler için kullanılacak yansıtma listesini belirtme. Yansıtılan URL, yansıtmanın kendisi ile protokol hariç source.json dosyası tarafından belirtilen modülün kaynak URL'sinin birleştirilmesidir. Ö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_repository türündeki modüller için temel yolu belirtme
  • /modules: Bu kayıt defterindeki her modül için bir alt dizin içeren bir dizin
  • /modules/$MODULE: Bu modülün her sürümü için bir alt dizin içeren bir dizin ve:
    • metadata.json: Modülle ilgili bilgileri içeren bir JSON dosyası. Aşağıdaki alanları içerir:
      • homepage: Projenin ana sayfasının URL'si
      • maintainers: Her biri kayıt defterindeki modülün bakım sorumlusunun bilgilerine karşılık gelen bir JSON nesneleri listesi. Bunun, projenin yazarları ile aynı olması gerekmediğini unutmayın.
      • versions: Bu kayıt defterinde bulunacak bu modülün tüm sürümlerinin listesi
      • yanked_versions: Bu modülün kaldırılmış sürümlerinin haritası. Anahtarlar, kaldırılacak sürümler olmalı, değerler ise sürümün neden kaldırıldığına dair açıklamalar olmalıdır. İdeal olarak, daha fazla bilgi içeren bir bağlantı da eklenmelidir.
  • /modules/$MODULE/$VERSION: Aşağıdaki dosyaları içeren bir dizin:
    • MODULE.bazel: Bu modül sürümünün MODULE.bazel dosyası
    • source.json: Bu modül sürümünün kaynağının nasıl getirileceğiyle ilgili bilgileri içeren bir JSON dosyası
      • Varsayılan tür, aşağıdaki alanları içeren bir http_archive deposunu temsil eden "archive"dır:
        • url: Kaynak arşivin URL'si
        • mirror_urls: Kaynak arşivin yansıtma URL'lerinin bulunduğu bir dize listesi. URL'ler, url sonrasında yedek olarak sırayla denenir.
        • integrity: Arşivin Subresource Integrity sağlama toplamı
        • strip_prefix: Kaynak arşivi çıkarılırken kaldırılacak dizin öneki
        • patches: Çıkartılan arşive uygulanacak yama dosyalarını içeren bir harita. Yama dosyaları /modules/$MODULE/$VERSION/patches dizininde bulunur. Anahtarlar yama dosyası adları, değerler ise yama dosyalarının bütünlük sağlama toplamıdır.
        • patch_strip: Unix patch'ın --strip bağımsız değişkeniyle aynıdır.
        • archive_type: İndirilen dosyanın arşiv türü (http_archive üzerindeki type ile aynıdır). Varsayılan olarak, arşiv türü URL'nin dosya uzantısından belirlenir. Uzantısı olmayan dosyalar için aşağıdakilerden birini açıkça belirtebilirsiniz: "zip", "jar", "war", "aar", "tar", "tar.gz", "tgz", "tar.xz", "txz", "tar.zst", "tzst", tar.bz2, "ar" veya "deb".
      • Tür, aşağıdaki alanlarla birlikte bir Git deposu kullanacak şekilde değiştirilebilir:
        • type: git_repository
        • https://bazel.build/rules/lib/repo/git adresinde açıklanan aşağıdaki alanlar:
          • remote
          • commit
          • shallow_since
          • tag
          • init_submodules
          • verbose
          • strip_prefix
      • Tür, aşağıdaki alanlarla birlikte local_repository deposunu temsil eden yerel bir yol kullanacak şekilde değiştirilebilir:
        • type: local_path
        • path: Deponun yerel yolu, aşağıdaki gibi hesaplanır:
          • path mutlak bir yolsa olduğu gibi kalır.
          • path göreli bir yol ve module_base_path mutlak bir yol ise <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ümlenir. Kayıt defteri yerel olarak barındırılmalı ve --registry=file://<registry_path> tarafından kullanılmalıdır. Aksi takdirde Bazel hata verir.
    • patches/: Yalnızca source.json "archive" türüne sahip olduğunda kullanılan, yama dosyalarını içeren isteğe bağlı bir dizin

Bazel Central Registry

https://bcr.bazel.build/ adresindeki Bazel Central Registry (BCR), bazelbuild/bazel-central-registry GitHub deposu tarafından desteklenen içeriklere sahip bir dizin kayıt defteridir. İçeriklerine https://registry.bazel.build/ adresindeki web ön ucu üzerinden göz atabilirsiniz.

BCR, Bazel topluluğu tarafından yönetilir ve katkıda bulunanlar çekme istekleri gönderebilir. BCR katkı yönergelerini inceleyin.

BCR, normal bir dizin kaydının biçimine uymanın 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 işlem hatları, modüller arasında birlikte çalışabilirliği sağlamak için de bu özelliği kullanır.

Kayıtları seçme

Modül isteğinde bulunulacak kayıt listesini belirtmek için tekrarlanabilir Bazel işareti --registry kullanılabilir. Böylece projenizi, bağımlılıkları üçüncü taraf veya dahili bir kayıt defterinden getirecek şekilde ayarlayabilirsiniz. Daha önceki kayıtlar önceliklidir. Kolaylık sağlaması için --registry işaretlerinin listesini projenizin .bazelrc dosyasına ekleyebilirsiniz.

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

--registry işaretini kullandığınızda Bazel Central Registry'nin varsayılan olarak kullanılması durdurulur ancak --registry=https://bcr.bazel.build ekleyerek bu kayıt defterini tekrar ekleyebilirsiniz.