Bazel kayıt otoriteleri

Sorun bildirme Kaynağı görüntüleme Nightly · 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

Bzlmod, bağımlılıkları keşfetmek için Bazel kayıt otoritelerinden (Bzel modüllerinin veritabanları) bilgilerini ister. Bzlmod şu anda yalnızca dizin kayıtlarını (belirli bir biçimi kullanan yerel dizinler veya statik HTTP sunucuları) desteklemektedir.

Dizin kaydı

Dizin kaydı; ana sayfa, bakım sorumluları, her sürümün MODULE.bazel dosyası ve her sürümün kaynağının nasıl alınacağı dahil olmak üzere bir modül listesi hakkında bilgi içeren yerel bir dizin veya statik HTTP sunucusudur. Özellikle kaynak arşivlerin kendisini sunması gerekmez.

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

  • /bazel_registry.json: Kayıt defteriyle ilgili aşağıdaki gibi meta verileri içeren bir JSON dosyası:
    • mirrors: Kaynak arşivler için kullanılacak aynaların listesini belirtir. Yansıtılan URL, yansıtmanın kendisinin birleşimidir. Modülün kaynak URL'si, source.json dosyası tarafından protokolü sansürler. Ö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üne sahip modüllerin temel yolunu belirtme
  • /modules: Bu kayıt defterindeki her modül için bir alt dizin içeren dizin
  • /modules/$MODULE: Bu modülün her sürümü için bir alt dizin ve ayrıca:
    • metadata.json: Modül hakkında bilgi içeren bir JSON dosyası. Aşağıdaki alanlara sahiptir:
      • homepage: Proje ana sayfasının URL'si
      • maintainers: Her biri kayıt defterindeki modülün sorumlusunun bilgilerine karşılık gelen JSON nesnelerinin listesi. Bu kullanıcıların, projenin yazarlarıyla aynı olmayabileceğini unutmayın.
      • versions: Bu modülün bu kayıt defterinde bulunan tüm sürümlerinin listesi
      • yanked_versions: Bu modülün yanked sürümlerinin bir haritası. Anahtarlar yank sürümleri olmalıdır, değerler ise sürümün neden çekildiğinin açıklamaları olmalı ve daha fazla bilgiye
  • /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 alınacağıyla ilgili bilgileri içeren bir JSON dosyası
      • Varsayılan tür, aşağıdaki alanlarla bir http_archive deposunu temsil eden "arşiv"dir:
        • url: Kaynak arşivinin URL'si
        • integrity: Arşivin alt öğe bütünlüğü sağlama toplamı
        • strip_prefix: Kaynak arşivi ayıklanırken kaldırılacak dizin ön eki
        • patches: Ayıklanan arşive uygulanacak yama dosyalarını içeren bir harita. Yama dosyaları /modules/$MODULE/$VERSION/patches dizininin altında bulunur. Anahtarlar, düzeltme dosyası adları, değerler ise düzeltme dosyalarının bütünlük sağlama sağlama toplamıdır.
        • patch_strip: Unix patch işlevinin --strip bağımsız değişkeniyle aynıdır.
        • archive_type: İndirilen dosyanın arşiv türü (http_archive'deki type ile aynıdır). Varsayılan olarak arşiv türü, URL'nin dosya uzantısından belirlenir. Dosyanın uzantısı yoksa şunlardan 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, şu alanlarla bir git deposu kullanacak şekilde değiştirilebilir:
        • type: git_repository
        • https://bazel.build/rules/lib/repo/git adresinde açıklanan alanlar:
          • remote
          • commit
          • shallow_since
          • tag
          • init_submodules
          • verbose
          • strip_prefix
      • Tür, aşağıdaki alanları kullanarak local_repository deposunu temsil eden yerel bir yolu kullanacak şekilde değiştirilebilir:
        • type: local_path
        • 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.
    • patches/: Yama 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 Merkezi Kayıt Otoritesi

https://bcr.bazel.build/ adresindeki Bazel Central Registry (BCR), GitHub deposu bazelbuild/bazel-central-registry tarafından desteklenen içeriklere sahip 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ı kurallarını inceleyin.

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üzenleri, modüller arasında birlikte çalışabilirliği sağlamak için bunu da kullanı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. Daha önceki kayıtlara öncelik verilir. 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 kolunda --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.