Bazel kayıt otoriteleri

Sorun bildir Kaynağı göster

Bzlmod, Bazel modüllerinin veritabanları olan Bazel kayıt otoritelerinden bilgilerini isteyerek bağımlılıkları keşfeder. Bzlmod şu anda yalnızca dizin kayıtlarını, yani belirli bir biçimin kullanıldığı yerel dizinler veya statik HTTP sunucularını desteklemektedir.

Dizin kaydı

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

Dizin kayıt defteri aşağıdaki biçime uymalıdır:

  • /bazel_registry.json: Kayıt defteri için meta verileri içeren bir JSON dosyası. Örneğin:
    • mirrors: Kaynak arşivleri için kullanılacak yansıtma listesini belirtme. Yansıtılmış URL, yansıtmanın kendi URL'sinin birleştirilmesidir. source.json dosyası tarafından belirtilen modülün kaynak URL'si ise protokolü temsil eder. Örneğin, bir modülün kaynak URL'si https://foo.com/bar/baz ve mirrors öğesinde ["https://mirror1.com/", "https://example.com/mirror2/"] varsa Bazel'ın deneyeceği URL'ler sırasıyla https://mirror1.com/foo.com/bar/baz, https://example.com/mirror2/foo.com/bar/baz ve son olarak da orijinal kaynak URL'sinin https://foo.com/bar/baz olması gerekir.
    • module_base_path: source.json dosyasında local_repository türü olan modüllerin temel yolunu belirtme
  • /modules: Bu kayıt defterindeki her bir modülün alt dizinini içeren bir 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 bilgiler içeren ve aşağıdaki alanlarla birlikte bir JSON dosyası:
      • homepage: Projenin ana sayfasının URL'si
      • maintainers: JSON nesnelerinin listesi. Her biri, kayıt defterindeki modülün koruyucu bilgilerine karşılık gelir. Bunun projenin yazarlarıyla aynı olmayabileceğini unutmayın
      • versions: Bu kayıt defterinde yer alacak bu modülün tüm sürümlerinin listesi
      • yanked_versions: Bu modülün çıkarılmış sürümlerinin haritası. Anahtarlar yank sürümleri olmalı, değerler ise sürümün neden çekildiğine dair açıklamalar olmalı ve ideal olarak daha fazla bilgiye yönlendiren bir bağlantı içermelidir
  • /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 alanlarla bir http_archive deposunu temsil eden "arşiv" türüdür:
        • url: Kaynak arşivin URL'si
        • integrity: Arşivin Alt Kaynak Bütünlüğü sağlama
        • strip_prefix: Kaynak arşivi çıkarırken çıkarılacak bir dizin ön eki
        • patches: Çıkarı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ğlaması
        • patch_strip: Unix patch'in --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ına göre 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 şu alanlar:
          • remote
          • commit
          • shallow_since
          • tag
          • init_submodules
          • verbose
          • strip_prefix
      • Tür, şu alanlarla bir local_repository deposunu temsil eden yerel bir yol kullanacak şekilde değiştirilebilir:
        • type: local_path
        • path: Deponun yerel yolu. Şu şekilde hesaplanır:
          • path mutlak bir yolsa olduğu gibi kalır
          • path göreli bir yol 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ümlenir. Kayıt defteri yerel olarak barındırılmalı ve --registry=file://<registry_path> tarafından kullanılmalıdır. Aksi takdirde, Bazel
    • patches/: Yama dosyalarını içeren isteğe bağlı bir dizindir ve yalnızca source.json "arşiv" türünde 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 kayıt defteridir. https://registry.bazel.build/ adresindeki web ön ucunu kullanarak dosyanın içeriğine göz atabilirsiniz.

BCR'yi Bazel topluluğu yönetir ve katkıda bulunanlar, çekme istekleri gönderebilir. BCR katkı kurallarını inceleyin.

BCR, normal bir dizin kayıt defterinin biçimini uygulamanın yanı sıra her modül sürümü (/modules/$MODULE/$VERSION/presubmit.yml) için bir presubmit.yml dosyası gerektirir. Bu dosya, bu modül sürümünün geçerliliğini kontrol etmek için kullanabileceğiniz birkaç önemli derleme ve test hedefi belirtir. BCR'nin CI ardışık düzenleri, modüller arasında birlikte çalışabilirlik sağlamak için de bunu kullanır.

Kayıtları seçme

Tekrarlanabilir Bazel işareti --registry, modül isteğinde bulunulacak kayıt otoritelerinin listesini belirtmek için kullanılabilir. Böylece projenizi, üçüncü taraftan veya dahili kayıttaki bağımlılıkları getirecek şekilde ayarlayabilirsiniz. İlk kayıt defterleri daha önceliklidir. Kolaylık sağlaması açısından projenizin .bazelrc dosyasına --registry işaretlerinden oluşan bir liste ekleyebilirsiniz.

Kayıt defteriniz GitHub'da barındırılıyorsa (örneğin, bazelbuild/bazel-central-registry çatalı olarak) --registry değerinizin raw.githubusercontent.com altında ham bir GitHub adresine sahip olması gerekir. Örneğin, my-org çatalının main dalında --registry=https://raw.githubusercontent.com/my-org/bazel-central-registry/main/ olarak ayarlanır.

--registry işaretinin kullanılması, Bazel Central Registry'nin varsayılan olarak kullanılmasını durdurur. Ancak --registry=https://bcr.bazel.build ekleyerek Bazel Central Registry'yi tekrar ekleyebilirsiniz.