Bzlmod menemukan dependensi dengan meminta informasinya dari registries Bazel: database modul Bazel. Saat ini, Bzlmod hanya mendukung registry indeks — direktori lokal atau server HTTP statis yang mengikuti format tertentu.
Registry indeks
Registry indeks adalah direktori lokal atau server HTTP statis yang berisi informasi tentang daftar modul, termasuk halaman beranda, pengelola, file MODULE.bazel
dari setiap versi, dan cara mengambil sumber setiap versi. Secara khusus, project 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 cermin yang akan digunakan untuk arsip sumbermodule_base_path
: menentukan jalur dasar untuk modul dengan jenislocal_repository
dalam filesource.json
/modules
: Direktori yang berisi subdirektori untuk setiap modul dalam registry ini/modules/$MODULE
: Direktori yang berisi subdirektori untuk setiap versi 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. Perlu diperhatikan bahwa nama ini tidak harus sama dengan author projectversions
: Daftar semua versi modul ini dapat ditemukan di registry iniyanked_versions
: Peta versi yanked dari modul ini. Kunci harus berupa versi untuk ditarik dan nilainya harus berupa deskripsi alasan versi ditarik, idealnya berisi link ke informasi selengkapnya
/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 "arsip", yang mewakili repo
http_archive
, dengan kolom berikut:url
: URL arsip sumberintegrity
: CheckIntegritas Subresource dari arsipstrip_prefix
: Awalan direktori untuk dihapus saat mengekstrak arsip sumberpatches
: Peta yang berisi file patch yang akan diterapkan ke arsip yang diekstrak. File patch berada di direktori/modules/$MODULE/$VERSION/patches
. Kuncinya adalah nama file patch, dan nilainya adalah checksum integritas file patchpatch_strip
: Sama seperti argumen--strip
Unixpatch
.archive_type
: Jenis arsip file yang didownload (Sama sepertitype
padahttp_archive
). Secara default, jenis arsip ditentukan dari ekstensi file URL. Jika file tidak memiliki ekstensi, Anda dapat secara eksplisit menentukan salah satu hal berikut:"zip"
,"jar"
,"war"
,"aar"
,"tar"
,"tar.gz"
,"tgz"
,"tar.xz"
,"txz"
,"tar.zst"
,"tzst"
,tar.bz2
,"ar"
, atau"deb"
.
- Jenisnya dapat diubah untuk menggunakan jalur lokal, yang mewakili repo
local_repository
, dengan kolom berikut:type
:local_path
path
: Jalur lokal ke repo, yang dihitung sebagai berikut:- Jika
path
adalah jalur absolut, jalur tersebut tidak akan berubah - Jika
path
adalah jalur relatif danmodule_base_path
adalah jalur absolut, maka akan ditetapkan menjadi<module_base_path>/<path>
- Jika
path
danmodule_base_path
adalah jalur relatif, jalur ini akan ditetapkan menjadi<registry_path>/<module_base_path>/<path>
. Registry harus dihosting secara lokal dan digunakan oleh--registry=file://<registry_path>
. Jika tidak, Bazel akan melemparkan error
- Jika
- Jenis defaultnya adalah "arsip", yang mewakili repo
patches/
: Direktori opsional yang berisi file patch, hanya digunakan jikasource.json
memiliki jenis "arsip"
Pendaftaran Pusat Bazel
Bazel Central Registry (BCR) di https://bcr.bazel.build/ adalah registry indeks 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 mempertahankan BCR, dan kontributor dipersilakan untuk mengirimkan permintaan pull. Lihat panduan kontribusi BCR.
Selain mengikuti format registry indeks normal, BCR memerlukan file presubmit.yml
untuk setiap versi modul (/modules/$MODULE/$VERSION/presubmit.yml
). File ini menentukan beberapa target build dan pengujian penting yang dapat Anda gunakan untuk memeriksa validitas versi modul ini. Pipeline CI BCR juga menggunakan ini untuk memastikan interoperabilitas
antara modul.
Memilih registry
Flag Bazel berulang --registry
dapat digunakan untuk menentukan daftar registry yang akan meminta modul. Dengan begitu, Anda dapat menyiapkan project untuk mengambil dependensi dari registry pihak ketiga atau internal. Registry sebelumnya lebih diutamakan. Untuk memudahkan, Anda dapat menempatkan daftar flag --registry
di
file .bazelrc
project Anda.
Jika registry Anda dihosting di GitHub (misalnya, sebagai fork bazelbuild/bazel-central-registry
), nilai --registry
Anda memerlukan alamat GitHub mentah di raw.githubusercontent.com
. Misalnya, pada cabang main
cabang my-org
, Anda akan menetapkan
--registry=https://raw.githubusercontent.com/my-org/bazel-central-registry/main/
.
Penggunaan tanda --registry
akan menghentikan penggunaan Bazel Central Registry secara default, tetapi Anda dapat menambahkannya kembali dengan menambahkan --registry=https://bcr.bazel.build
.