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 duplikat yang akan digunakan untuk arsip sumbermodule_base_path
: menentukan jalur dasar untuk modul dengan Jenislocal_repository
di filesource.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 projectmaintainers
: Daftar objek JSON, yang masing-masing sesuai dengan informasi pengelola modul di registry. Perhatikan bahwa ini belum tentu sama dengan penulis rencanaversions
: Daftar semua versi modul ini yang dapat ditemukan di registry iniyanked_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
: FileMODULE.bazel
versi modul inisource.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 sumberintegrity
: Subresource Integritas {i>checksum<i} arsipstrip_prefix
: Awalan direktori yang akan dihapus saat mengekstrak arsip sumberpatches
: 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 patchpatch_strip
: Sama seperti argumen--strip
daripatch
Unix.archive_type
: Jenis arsip file yang didownload (Sama sepertitype
padahttp_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 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 danmodule_base_path
adalah jalur jalur absolut, URL akan di-resolve menjadi<module_base_path>/<path>
- Jika
path
danmodule_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
- Jika
- Jenis defaultnya adalah "archive", yang mewakili repo
patches/
: Direktori opsional yang berisi file patch, hanya digunakan saatsource.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
.