Registry Bazel

Laporkan masalah Lihat sumber Per malam · 7,3 · 7,2 · 7,1 · 7,0 · 6,5

Bzlmod menemukan ketergantungan dengan meminta informasi dari Bazel registries: database modul Bazel. Saat ini, Bzlmod hanya mendukung registry indeks — direktori lokal atau server HTTP statis dengan mengikuti format tertentu.

Registry indeks

{i>Registry indeks<i} adalah direktori lokal atau server HTTP statis yang berisi informasi tentang daftar modul — termasuk beranda, pengelola, MODULE.bazel file dari setiap versi, dan cara mengambil sumber setiap versi . Secara khusus, server ini tidak perlu menayangkan arsip sumber itu sendiri.

Registry indeks harus mengikuti format berikut:

  • /bazel_registry.json: File JSON yang berisi metadata untuk registry seperti:
    • mirrors: menentukan daftar duplikasi yang akan digunakan untuk arsip sumber. URL yang dicerminkan adalah penyambungan dari cermin itu sendiri, dan URL sumber modul yang ditentukan oleh file source.json tanpa dan berperforma tinggi karena merupakan protokol biner. Misalnya, jika URL sumber modul adalah https://foo.com/bar/baz, dan mirrors berisi ["https://mirror1.com/", "https://example.com/mirror2/"], lalu URL yang akan dicoba Bazel secara berurutan adalah https://mirror1.com/foo.com/bar/baz, https://example.com/mirror2/foo.com/bar/baz, dan akhirnya versi asli URL sumber itu sendiri https://foo.com/bar/baz.
    • module_base_path: menentukan jalur dasar untuk modul dengan Jenis local_repository di file source.json
  • /modules: Direktori yang berisi subdirektori untuk setiap modul dalam ini daftar
  • /modules/$MODULE: Direktori yang berisi subdirektori untuk setiap versi di modul ini, serta:
    • metadata.json: File JSON yang berisi informasi tentang modul, dengan kolom berikut:
      • homepage: URL halaman beranda project
      • maintainers: Daftar objek JSON, yang masing-masing sesuai dengan informasi pengelola modul di registry. Perhatikan bahwa ini belum tentu sama dengan penulis rencana
      • versions: Daftar semua versi modul ini yang dapat ditemukan di registry ini
      • yanked_versions: Peta yang ditarik versi modul ini. Kunci harus versi untuk di-yank dan nilainya harus merupakan deskripsi dari mengapa versi itu ditarik, idealnya berisi tautan ke informasi
  • /modules/$MODULE/$VERSION: Direktori yang berisi file berikut:
    • MODULE.bazel: File MODULE.bazel versi modul ini
    • source.json: File JSON yang berisi informasi tentang cara mengambil sumber versi modul ini
      • Jenis defaultnya adalah "archive", yang mewakili repo http_archive, dengan kolom berikut:
        • url: URL arsip sumber
        • integrity: Subresource Integritas {i>checksum<i} arsip
        • strip_prefix: Awalan direktori yang akan dihapus saat mengekstrak arsip sumber
        • patches: Peta yang berisi file patch yang akan diterapkan ke arsip yang diekstrak. File patch terletak di bagian Direktori /modules/$MODULE/$VERSION/patches. Kunci tersebut adalah nama file patch, dan nilainya adalah {i>checksum<i} integritas dari file patch
        • patch_strip: Sama seperti argumen --strip dari patch Unix.
        • archive_type: Jenis arsip file yang didownload (Sama seperti type pada http_archive). Secara default, jenis arsip ditentukan dari ekstensi file URL. Jika file berisi tanpa ekstensi, Anda dapat secara eksplisit menentukan salah satu dari hal berikut: "zip", "jar", "war", "aar", "tar", "tar.gz", "tgz", "tar.xz", "txz", "tar.zst", "tzst", tar.bz2, "ar", atau "deb".
      • Jenis ini dapat diubah untuk menggunakan repositori git, dengan kolom berikut:
        • type: git_repository
        • Kolom berikut seperti yang dijelaskan di https://bazel.build/rules/lib/repo/git:
          • remote
          • commit
          • shallow_since
          • tag
          • init_submodules
          • verbose
          • strip_prefix
      • Jenis dapat diubah untuk menggunakan jalur lokal, yang mewakili local_repository, dengan kolom berikut:
        • type: local_path
        • path: Jalur lokal ke repo, yang dihitung sebagai berikut:
          • Jika path adalah jalur absolut, jalur tersebut akan tetap seperti aslinya
          • Jika path adalah jalur relatif dan module_base_path adalah jalur jalur absolut, URL akan di-resolve menjadi <module_base_path>/<path>
          • Jika path dan module_base_path adalah jalur relatif, maka di-resolve menjadi <registry_path>/<module_base_path>/<path>. Registry harus dihosting secara lokal dan digunakan oleh --registry=file://<registry_path>. Jika tidak, Bazel akan tampilkan error
    • patches/: Direktori opsional yang berisi file patch, hanya digunakan saat source.json memiliki "arsip" (jenis

Bazel Central Registry

Bazel Central Registry (BCR) di https://bcr.bazel.build/ adalah indeks registry dengan konten yang didukung oleh repo GitHub bazelbuild/bazel-central-registry Anda dapat menjelajahi kontennya menggunakan frontend web di https://registry.bazel.build/.

Komunitas Bazel mengelola BCR, dan kontributor dipersilakan untuk mengirimkan permintaan pull. Lihat kontribusi BCR pedoman kami.

Selain mengikuti format {i>registry<i} indeks normal, BCR memerlukan file presubmit.yml untuk setiap versi modul (/modules/$MODULE/$VERSION/presubmit.yml). File ini menentukan beberapa hal penting bangun dan uji target yang dapat Anda gunakan untuk memeriksa validitas modul ini . Pipeline CI BCR juga menggunakan ini untuk memastikan interoperabilitas antar-modul.

Memilih registry

Tanda Bazel berulang --registry dapat digunakan untuk menentukan daftar registry untuk meminta modul, sehingga Anda dapat menyiapkan project yang akan diambil dependensi dari pihak ketiga atau {i>registry<i} internal. Registri sebelumnya mengambil prioritas tinggi. Untuk memudahkan, Anda dapat menempatkan daftar tanda --registry di .bazelrc dari project Anda.

Jika {i>registry<i} Anda dihosting di GitHub (misalnya, sebagai garpu dari bazelbuild/bazel-central-registry) maka nilai --registry Anda memerlukan Alamat GitHub di bawah raw.githubusercontent.com. Misalnya, di main yang merupakan cabang dari garpu my-org, Anda akan menetapkan --registry=https://raw.githubusercontent.com/my-org/bazel-central-registry/main/.

Menggunakan tanda --registry akan menghentikan penggunaan Bazel Central Registry oleh default, tetapi Anda dapat menambahkannya kembali dengan menambahkan --registry=https://bcr.bazel.build.