Esta página está destinada a los propietarios y mantenedores de repositorios de reglas de Bazel. En ella, 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 situación de ejecución remota. Las instrucciones de esta página se aplican a los proyectos almacenados en repositorios de GitHub.
Requisitos previos
Antes de completar los pasos de esta página, asegúrate de lo siguiente:
- Tu repositorio de GitHub forma parte de la organización de GitHub de Bazel.
- Configuraste Buildkite para tu repositorio como se describe en Integración continua de Bazel.
Configura la CI de Bazel para realizar pruebas
En tu archivo
.bazelci/presubmit.yml, haz lo siguiente:a. Agrega una configuración llamada
rbe_ubuntu1604.b. En la configuración
rbe_ubuntu1604, agrega los destinos de compilación y prueba que deseas probar con la ejecución remota.Agrega el
bazel-toolchainsrepositorio de GitHub a tuWORKSPACEarchivo, fijado a la versión más reciente. También agrega un destinorbe_autoconfigcon el nombrebuildkite_config. En este ejemplo se crea una configuración de 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 tus cambios al archivo
presubmit.yml. (Consulta la solicitud de extracción de ejemplo).Para ver los resultados de la compilación, haz clic en Details para la verificación de la solicitud de extracción 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 ejecuten las pruebas de CI. (Consulta los resultados de ejemplo).

(Opcional) Establece la verificación bazel test (RBE (Ubuntu 16.04)) como una prueba que se debe aprobar antes de combinarla en tu regla de protección de ramas. El parámetro de configuración se encuentra en GitHub en Settings > Branches > Branch protection rules, como se muestra en la siguiente figura.

Soluciona problemas de compilaciones y pruebas fallidas
Si falla la compilación o las pruebas, es probable que se deba a lo siguiente:
Las herramientas de compilación o prueba requeridas no están instaladas en el contenedor predeterminado. Las compilaciones que usan la configuración
rbe_ubuntu1604se ejecutan de forma predeterminada dentro de unrbe-ubuntu16-04contenedor, que incluye herramientas comunes a muchas compilaciones de Bazel. Sin embargo, si tus reglas requieren herramientas que no están presentes en el contenedor predeterminado, debes crear un contenedor personalizado basado en elrbe-ubuntu16-04contenedor y, luego, incluir esas herramientas como se describe más adelante.Los destinos de compilación o prueba usan reglas que no son compatibles con la ejecución remota. Consulta Adapta las reglas de Bazel para la ejecución remota para obtener detalles sobre la compatibilidad con la ejecución remota.
Usa un contenedor personalizado en la configuración de CI de rbe_ubuntu1604
El contenedor rbe-ubuntu16-04 está disponible públicamente en la siguiente URL:
http://gcr.io/cloud-marketplace/google/rbe-ubuntu16-04
Puedes extraerlo directamente de Container Registry o compilarlo desde la fuente. En las siguientes secciones, se describen ambas opciones.
Antes de comenzar, asegúrate de haber instalado gcloud, docker y git.
Si compilas el contenedor desde la 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:
gcloud docker -- pull gcr.io/cloud-marketplace/google/rbe-ubuntu16-04@sha256:sha256-checksumReemplaza sha256-checksum por el valor de suma de comprobación SHA256 de l contenedor más reciente.
Compila el contenedor rbe-ubuntu16-04 desde la fuente
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-toolchainsConfigura los destinos de los 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/bashReemplaza
sha256-checksumpor el valor de suma de comprobación SHA256 del contenedor más reciente.Si compilaste el contenedor desde la 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 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 Dockerfile fragmento 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
Una vez que hayas personalizado el contenedor, compila la imagen del contenedor 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-nameEnvía la imagen de contenedor a Container Registry:
gcloud docker -- push gcr.io/project-id/custom-container-nameNavega 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 comprobación SHA256 de tu contenedor personalizado. Deberás proporcionarla más adelante en la definición de la plataforma de compilación.
Configura el contenedor para el acceso público como se describe en públicamente accesible como se explica en Publica imágenes.
Para obtener más información, consulta Envía y extrae imágenes.
Especifica la definición de la plataforma de compilación
Debes incluir una configuración de plataforma de Bazel en tu
configuración de cadena de herramientas personalizada, lo que permite que Bazel seleccione una cadena de herramientas
adecuada para la plataforma de hardware o software deseada. Para generar
automáticamente una plataforma válida, puedes agregar a tu WORKSPACE un
rbe_autoconfig destino con el nombre buildkite_config que incluya atributos adicionales
para seleccionar tu contenedor personalizado. Para obtener detalles sobre esta configuración, lee
la documentación actualizada de rbe_autoconfig.