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 duplikat yang akan digunakan untuk arsip sumber
    • 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.