Bazel kayıt otoriteleri

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

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

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 aşağıdaki biçime uygun olmalıdır:

  • /bazel_registry.json: Kayıt otoritesinin meta verilerini içeren bir JSON dosyası (ör.
    • mirrors: Kaynak arşivler için kullanılacak aynaların listesini belirtir. 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_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 bir dizin
  • /modules/$MODULE: Bu modülün her sürümü için bir alt dizin içeren bir dizin ve aşağıdakiler:
    • metadata.json: Modül hakkında bilgi içeren bir JSON dosyası. Aşağıdaki alanlara sahiptir:
      • homepage: Projenin ana sayfasının URL'si
      • maintainers: Her biri kayıt defterindeki modülün bir koruyucusunun 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 geri çekilen sürümlerinin haritası. Anahtarlar, kaldırılacak sürümler, değerler ise sürümün neden kaldırıldığının açıklamaları olmalıdır. İdeal olarak, daha fazla bilginin bağlantısı da sağlanmalıdır.
  • /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 alanlara sahip bir http_archive deposunu temsil eden "arşiv"dir:
        • url: Kaynak arşivin URL'si
        • integrity: Arşivin alt öğe bütünlüğü sağlama toplamı
        • strip_prefix: Kaynak arşivi ayıklanırken kaldırılacak bir dizin ön eki
        • patches: Ayıklanan arşive uygulanacak yama dosyalarını içeren bir harita. Yama dosyaları /modules/$MODULE/$VERSION/patches dizininde 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 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 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 alanlara sahip bir local_repository deposunu temsil eden yerel bir yol 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/: 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

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 ekleyerek tekrar ekleyebilirsiniz.