Para descubrir dependencias, Bzlmod solicita su información a los registros de Bazel: bases de datos de módulos de Bazel. Actualmente, Bzlmod solo admite registros de índices: directorios locales o servidores HTTP estáticos que siguen un formato específico.
Registro de índices
Un registro de índices es un directorio local o un servidor HTTP estático que contiene información sobre una lista de módulos, incluida su página principal, los encargados de mantenimiento, el archivo MODULE.bazel
de cada versión y cómo recuperar el código fuente de cada versión. En particular, no necesita entregar los archivos de origen en sí.
Un registro de índices debe seguir el siguiente formato:
/bazel_registry.json
: Es un archivo JSON que contiene metadatos para el registro, como los siguientes:mirrors
: Especifica la lista de duplicaciones que se usarán para los archivos de origen.module_base_path
: Especifica la ruta base para los módulos con el tipolocal_repository
en el archivosource.json
.
/modules
: un directorio que contiene un subdirectorio para cada módulo en este registro/modules/$MODULE
: Directorio que contiene un subdirectorio para cada versión de este módulo, así como lo siguiente:metadata.json
: Es un archivo JSON que contiene información sobre el módulo, con los siguientes campos:homepage
: La URL de la página principal del proyectomaintainers
: Es una lista de objetos JSON, cada uno de los cuales corresponde a la información de un encargado de mantenimiento del módulo en el registro. Ten en cuenta que no es necesariamente lo mismo que los autores del proyectoversions
: Es una lista de todas las versiones de este módulo que se encuentran en este registro.yanked_versions
: Es un mapa de versiones tomadas de este módulo. Las claves deben ser versiones para yank, y los valores deben ser descripciones de por qué se realiza el reinicio de la versión, idealmente con un vínculo para obtener más información
/modules/$MODULE/$VERSION
: Un directorio que contiene los siguientes archivos:MODULE.bazel
: Es el archivoMODULE.bazel
de la versión de este módulo.source.json
: Es un archivo JSON que contiene información para recuperar la fuente de la versión de este módulo.- El tipo predeterminado es "archive", que representa un repositorio
http_archive
, con los siguientes campos:url
: Es la URL del archivo de origen.integrity
: La suma de verificación de Integridad de los subrecursos del archivostrip_prefix
: Es un prefijo de directorio que se quitará cuando se extraiga el archivo de origen.patches
: Un mapa que contiene archivos de parche para aplicar al archivo extraído. Los archivos de parche se encuentran en el directorio/modules/$MODULE/$VERSION/patches
. Las claves son los nombres del archivo de parche y los valores son la suma de verificación de integridad de los archivos de parchepatch_strip
: es igual que el argumento--strip
depatch
de Unix.archive_type
: Es el tipo de archivo del archivo descargado (al igual quetype
enhttp_archive
). De forma predeterminada, este se determina a partir de la extensión de archivo de la URL. Si el archivo no tiene extensión, puedes especificar explícitamente una de las siguientes opciones:"zip"
,"jar"
,"war"
,"aar"
,"tar"
,"tar.gz"
,"tgz"
,"tar.xz"
,"txz"
,"tar.zst"
,"tzst"
,tar.bz2
,"ar"
o"deb"
.
- Se puede cambiar el tipo para usar una ruta local, que represente un repositorio de
local_repository
, con estos campos:type
:local_path
path
: La ruta local al repositorio, que se calcula de la siguiente manera:- Si
path
es una ruta de acceso absoluta, se mantiene como está - Si
path
es una ruta de acceso relativa ymodule_base_path
es una ruta absoluta, se resuelve en<module_base_path>/<path>
. - Si
path
ymodule_base_path
son rutas de acceso relativas, se resuelve como<registry_path>/<module_base_path>/<path>
. El registro debe estar alojado de forma local, y--registry=file://<registry_path>
debe usarlo. De lo contrario, Bazel arrojará un error
- Si
- El tipo predeterminado es "archive", que representa un repositorio
patches/
: Es un directorio opcional que contiene archivos de parche. Solo se usa cuandosource.json
tiene el tipo "archive".
Registro central de Bazel
Bazel Central Registry (BCR) en https://bcr.bazel.build/ es un registro de índice con contenido respaldado por el repositorio de GitHub bazelbuild/bazel-central-registry
.
Puedes explorar su contenido con el frontend web en https://registry.bazel.build/.
La comunidad de Bazel mantiene la BCR, y los colaboradores pueden enviar solicitudes de extracción. Consulta los lineamientos para contribuciones de BCR.
Además de seguir el formato de un registro de índices normal, el BCR requiere un archivo presubmit.yml
para cada versión del módulo (/modules/$MODULE/$VERSION/presubmit.yml
). Este archivo especifica algunos objetivos esenciales de compilación y prueba que puedes usar para verificar la validez de la versión de este módulo. Las canalizaciones de CI de BCR también usan esto para garantizar la interoperabilidad entre módulos.
Selecciona registros
Se puede usar la marca repetible de Bazel --registry
para especificar la lista de registros a los que se deben solicitar módulos, de modo que puedas configurar tu proyecto para recuperar dependencias de un registro interno o de terceros. Los registros anteriores
tienen prioridad. Para mayor comodidad, puedes incluir una lista de marcas --registry
en el archivo .bazelrc
de tu proyecto.
Si tu registro está alojado en GitHub (por ejemplo, como una bifurcación de bazelbuild/bazel-central-registry
), tu valor --registry
necesita una dirección de GitHub sin procesar en raw.githubusercontent.com
. Por ejemplo, en la rama main
de la bifurcación my-org
, debes configurar --registry=https://raw.githubusercontent.com/my-org/bazel-central-registry/main/
.
El uso de la marca --registry
evita que se use Bazel Central Registry de forma predeterminada, pero puedes volver a agregarlo si agregas --registry=https://bcr.bazel.build
.