Registros de Bazel

Informar un problema Ver fuente Por la noche · 7.2 · 7.1 · 7.0 · 6.5 · 6.4

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.
    • module_base_path: Especifica la ruta base para los módulos con Escribe local_repository en el archivo source.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 proyecto
      • maintainers: 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 proyecto
      • versions: Es una lista de todas las versiones de este módulo que se encuentran en este registro
      • yanked_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 archivo MODULE.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 archivo
        • strip_prefix: Es un prefijo de directorio que se quitará cuando se extraiga el elemento. archivo de origen
        • patches: 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 parche
        • patch_strip: es igual que el argumento --strip de patch de Unix.
        • archive_type: Es el tipo de archivo del archivo descargado (al igual que type en http_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 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 y module_base_path es una ruta de acceso absoluta, se resuelve como <module_base_path>/<path>
          • Si path y module_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
    • patches/: Un directorio opcional que contiene archivos de parche, solo se usa cuando source.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.