Esta página está destinada a los propietarios y encargados del mantenimiento de los repositorios de reglas de Bazel. Integra se describe cómo configurar el sistema de integración continua (CI) de Bazel para tu repositorio para probar la compatibilidad de tus reglas con una ejecución remota situación. Las instrucciones de esta página se aplican a los proyectos almacenados en Repositorios de GitHub.
Requisitos previos
Antes de completar los pasos que se indican en esta página, asegúrate de hacer lo siguiente:
- Tu repositorio de GitHub forma parte del Organización de GitHub de Bazel.
- Configuraste Buildkite para tu repositorio como se describe en Integración continua de Bazel.
Configura Bazel CI para las pruebas
En tu archivo
.bazelci/presubmit.yml
, haz lo siguiente:a. Agrega una configuración llamada
rbe_ubuntu1604
.b. En la configuración de
rbe_ubuntu1604
, agrega los destinos de compilación y de prueba que desees probar en la ejecución remota.Agrega
bazel-toolchains
. Repositorio de GitHub en tu archivoWORKSPACE
, fijado al la versión más reciente. También Agrega un destinorbe_autoconfig
con el nombrebuildkite_config
. En este ejemplo, Crea la configuración de la cadena de herramientas para la ejecución remota con BuildKite CI. pararbe_ubuntu1604
.
load("@bazel_toolchains//rules:rbe_repo.bzl", "rbe_autoconfig")
rbe_autoconfig(name = "buildkite_config")
Envía una solicitud de extracción con los cambios en el archivo
presubmit.yml
. (Consulta ejemplo de solicitud de extracción).Para ver los resultados de la compilación, haz clic en Detalles de RBE (Ubuntu 16.04) en GitHub, como se muestra en la siguiente figura. Este vínculo estará disponible después de que se combine la solicitud de extracción y se realicen las pruebas de CI que se hayan ejecutado. (Consulta resultados de ejemplo).
Configura la verificación bazel test (RBE [Ubuntu 16.04]) como prueba (opcional). necesario para pasar antes de combinar en tu regla de protección de ramas. El parámetro de configuración está en GitHub en Configuración > Ramas > Reglas de protección de ramas como se muestra en la siguiente figura.
Soluciona problemas de compilaciones y pruebas con errores
Si la compilación o las pruebas fallan, es probable que se deba a lo siguiente:
Las herramientas de compilación o de prueba necesarias no están instaladas en el contenedor predeterminado. Las compilaciones que usan la configuración
rbe_ubuntu1604
se ejecutan de forma predeterminada en unrbe-ubuntu16-04
que incluye herramientas comunes a muchas compilaciones de Bazel. Sin embargo, si tus reglas requieren herramientas que no están en el contenedor predeterminado, debes crear un contenedor personalizado basado enrbe-ubuntu16-04
contenedor e incluya esas herramientas como se describe más adelante.Los destinos de compilación o prueba usan reglas incompatibles con los controles remotos ejecución. Consulta Adapta las reglas de Bazel para la ejecución remota para detalles sobre la compatibilidad con la ejecución remota.
Usa un contenedor personalizado en la configuración de CI rbe_ubuntu1604
El contenedor rbe-ubuntu16-04
está disponible de forma pública en la siguiente URL:
http://gcr.io/cloud-marketplace/google/rbe-ubuntu16-04
Puedes extraerlo directamente de Container Registry o compilarlo desde el código fuente. El las siguientes secciones describen ambas opciones.
Antes de comenzar, asegúrate de haber instalado gcloud
, docker
y git
.
Si compilas el contenedor a partir del código fuente, también debes instalar la versión más reciente
de Bazel.
Extrae rbe-ubuntu16-04 de Container Registry
Para extraer el contenedor rbe-ubuntu16-04
de Container Registry, ejecuta el siguiente comando:
siguiente comando:
gcloud docker -- pull gcr.io/cloud-marketplace/google/rbe-ubuntu16-04@sha256:sha256-checksum
Reemplaza sha256-checksum por el valor de la suma de comprobación SHA256 para el contenedor más reciente.
Compila el contenedor rbe-ubuntu16-04 desde el origen
Para compilar el contenedor rbe-ubuntu16-04
desde la fuente, haz lo siguiente:
Clona el repositorio
bazel-toolchains
:git clone https://github.com/bazelbuild/bazel-toolchains
Configura los destinos de contenedores de la cadena de herramientas y compila el contenedor como se explica en Contenedores de la cadena de herramientas.
Extrae el contenedor recién compilado:
gcloud docker -- pull gcr.io/project-id/custom-container-namesha256-checksum
Ejecuta el contenedor personalizado
Para ejecutar el contenedor personalizado, realiza una de las siguientes acciones:
Si extrajiste el contenedor de Container Registry, ejecuta el siguiente comando: :
docker run -it gcr.io/cloud-marketplace/google/rbe-ubuntu16-04@sha256:sha256-checksum/bin/bash
Reemplaza
sha256-checksum
por el valor de la suma de comprobación SHA256 del contenedor más reciente.Si compilaste el contenedor a partir del código fuente, ejecuta el siguiente comando:
docker run -it gcr.io/project-id/custom-container-name@sha256:sha256sum /bin/bash
Agrega recursos al contenedor personalizado
Usa un objeto Dockerfile
o
rules_docker
para agregar recursos o
versiones alternativas de los recursos originales al contenedor rbe-ubuntu16-04
.
Si eres nuevo en Docker, lee lo siguiente:
Por ejemplo, el siguiente fragmento de Dockerfile
instala my_tool_package
:
FROM gcr.io/cloud-marketplace/google/rbe-ubuntu16-04@sha256:sha256-checksum
RUN apt-get update && yes | apt-get install -y my_tool_package
Envía el contenedor personalizado a Container Registry
Cuando hayas personalizado el contenedor, compila su imagen y envíala a Container Registry de la siguiente manera:
Compila la imagen del contenedor:
docker build -t custom-container-name.
docker tag custom-container-name gcr.io/project-id/custom-container-name
Envía la imagen de contenedor a Container Registry:
gcloud docker -- push gcr.io/project-id/custom-container-name
Navega a la siguiente URL para verificar que se haya enviado el contenedor:
https://console.cloud.google.com/gcr/images/project-id/GLOBAL/custom-container-name
Toma nota de la suma de verificación SHA256 de tu contenedor personalizado. Deberás y proporcionarla en la definición de tu plataforma de compilación más adelante.
Configurar el contenedor para el acceso público como se describe en accesibles, como se explica en Entrega imágenes de forma pública.
Para obtener más información, consulta Envía y extrae imágenes.
Cómo especificar la definición de la plataforma de compilación
Debes incluir una configuración de plataforma Bazel en tu
configuración de la cadena de herramientas personalizada, que permite que Bazel seleccione una cadena de herramientas.
apropiada para la plataforma de hardware o software deseada. Para generar
automáticamente una plataforma válida, puedes agregar a tu WORKSPACE
un
El destino rbe_autoconfig
con el nombre buildkite_config
, que incluye
para seleccionar tu contenedor personalizado. Para obtener detalles sobre esta configuración, lee
la documentación actualizada de rbe_autoconfig
.