Para descubrir dependencias, Bzlmod solicita su información a Bazel registros: bases de datos de módulos de Bazel. Actualmente, Bzlmod solo admite registros de índice: directorios locales o servidores HTTP estáticos siguiendo un formato específico.
Registro de índices
Un registro de índice es un directorio local o un servidor HTTP estático que contiene
información sobre una lista de módulos, como la página de inicio, los encargados de mantenimiento,
MODULE.bazel
de cada versión y cómo recuperar la fuente de cada una
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:mirrors
: Especifica la lista de duplicaciones que se usarán para los archivos de origen. La URL duplicada es una concatenación de la duplicación misma, y el URL de origen del módulo especificado por su archivosource.json
protocolo. Por ejemplo, si la URL de origen de un módulo eshttps://foo.com/bar/baz
ymirrors
contiene["https://mirror1.com/", "https://example.com/mirror2/"]
y, luego, Las URLs que Bazel probará en orden sonhttps://mirror1.com/foo.com/bar/baz
,https://example.com/mirror2/foo.com/bar/baz
y, por último, la original La URL de origenhttps://foo.com/bar/baz
.module_base_path
: Especifica la ruta base para los módulos con Escribelocal_repository
en el archivosource.json
/modules
: Es un directorio que contiene un subdirectorio para cada módulo de este. registro/modules/$MODULE
: Es un directorio que contiene un subdirectorio para cada versión. de este módulo, además de los siguientes temas: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
: Una lista de objetos JSON, cada uno de los cuales corresponde a lo siguiente: 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 de la proyectoversions
: Es una lista de todas las versiones de este módulo que se encuentran en este registroyanked_versions
: mapa de tiradas versiones de este módulo. Las claves deben ser versiones para lanzar y los valores deben ser descripciones de por qué se rechaza la versión, que idealmente contiene un enlace a 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 el fuente de esta versión del módulo- El tipo predeterminado es "file", que representa un repositorio de
http_archive
. con los siguientes campos:url
: Es la URL del archivo de origen.integrity
: el subrecurso Integridad suma de comprobación del archivostrip_prefix
: Es un prefijo de directorio que se quitará cuando se extraiga el elemento. archivo de origenpatches
: Es un mapa que contiene archivos de parche para aplicar al se extrajo el archivo. Los archivos de parche se encuentran en el/modules/$MODULE/$VERSION/patches
. Las claves son los nombres de los archivos de parche, y los valores son la suma de comprobació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, el tipo de archivo se determina a partir de la extensión de archivo de la URL. Si el archivo tiene sin 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 un repositorio de Git con estos campos:
type
:git_repository
- Los siguientes campos se describen en https://bazel.build/rules/lib/repo/git:
remote
commit
shallow_since
tag
init_submodules
verbose
strip_prefix
- Se puede cambiar el tipo para usar una ruta local, que represente un
local_repository
, con estos campos:type
:local_path
path
: Es 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 de acceso absoluta, se resuelve como<module_base_path>/<path>
- Si
path
ymodule_base_path
son rutas de acceso relativas, se resuelve en<registry_path>/<module_base_path>/<path>
. El registro debe estar alojado localmente y debe usarse--registry=file://<registry_path>
De lo contrario, Bazel arroja un error
- Si
- El tipo predeterminado es "file", que representa un repositorio de
patches/
: Un directorio opcional que contiene archivos de parche, solo se usa cuandosource.json
tiene la palabra "archivar" tipo
Registro central de Bazel
El registro central de Bazel (BCR) en https://bcr.bazel.build/ es un índice.
de registro 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 enviarla. las solicitudes de extracción. Consulta la contribución de BCR lineamientos.
Además de seguir el formato de un registro de índice normal, la BCR requiere
un archivo presubmit.yml
para cada versión del módulo
(/modules/$MODULE/$VERSION/presubmit.yml
). Este archivo especifica algunos elementos
objetivos de compilación y prueba que puedes usar para verificar la validez de este módulo
versión. Las canalizaciones de CI de BCR también usan esto para garantizar la interoperabilidad
entre los módulos.
Selecciona registros
Se puede usar la marca repetible de Bazel --registry
para especificar la lista de
registros a los que solicitar módulos, de modo que puedas configurar tu proyecto para recuperar
las dependencias de un registro
interno o de terceros. Los registros anteriores toman
prioridad. Para mayor comodidad, puedes incluir una lista de marcas --registry
en el
.bazelrc
archivo de tu proyecto.
Si tu registro está alojado en GitHub (por ejemplo, como una bifurcación de
bazelbuild/bazel-central-registry
), el valor de --registry
necesita un valor sin procesar
Dirección de GitHub en raw.githubusercontent.com
. Por ejemplo, en main
de la bifurcación my-org
, debes establecer
--registry=https://raw.githubusercontent.com/my-org/bazel-central-registry/main/
El uso de la marca --registry
evita que se use Bazel Central Registry.
predeterminada, pero puedes volver a agregarla agregando --registry=https://bcr.bazel.build
.