Comienza a usar el contenedor de Docker de Bazel

Informar un problema Ver fuente

En esta página, se proporcionan detalles sobre el contenido del contenedor de Bazel, cómo compilar el proyecto abseil-cpp con Bazel dentro del contenedor de Bazel y cómo compilar este proyecto directamente desde la máquina anfitrión mediante el contenedor de Bazel con activación de directorio.

Compila un proyecto de Abseil desde tu máquina anfitrión con la activación de directorios

Las instrucciones de esta sección te permiten compilar mediante el contenedor de Bazel con las fuentes extraídas en tu entorno de host. Se inicia un contenedor por cada comando de compilación que ejecutas. Los resultados de la compilación se almacenan en caché en tu entorno de host para que puedan volver a usarse en las compilaciones.

Clona el proyecto en un directorio en tu máquina anfitrión.

git clone --depth 1 --branch 20220623.1 https://github.com/abseil/abseil-cpp.git /src/workspace

Crea una carpeta que tenga resultados almacenados en caché que se compartirán entre las compilaciones.

mkdir -p /tmp/build_output/

Usa el contenedor de Bazel para compilar el proyecto y hacer que los resultados de la compilación estén disponibles en la carpeta de salida de tu máquina anfitrión.

docker run \
  -e USER="$(id -u)" \
  -u="$(id -u)" \
  -v /src/workspace:/src/workspace \
  -v /tmp/build_output:/tmp/build_output \
  -w /src/workspace \
  gcr.io/bazel-public/bazel:latest \
  --output_user_root=/tmp/build_output \
  build //absl/...

Para compilar el proyecto con limpiadores, agrega la marca de compilación --config=asan|tsan|msan a fin de seleccionar AddressSanitizer (asan), ThreadSanitizer (tsan) o MemorySanitizer (msan) según corresponda.

docker run \
  -e USER="$(id -u)" \
  -u="$(id -u)" \
  -v /src/workspace:/src/workspace \
  -v /tmp/build_output:/tmp/build_output \
  -w /src/workspace \
  gcr.io/bazel-public/bazel:latest \
  --output_user_root=/tmp/build_output \
  build --config={asan | tsan | msan} -- //absl/... -//absl/types:variant_test

Compila el proyecto Abseil desde el contenedor

Las instrucciones de esta sección te permiten compilar mediante el contenedor de Bazel con las fuentes dentro del contenedor. Si inicias un contenedor al comienzo del flujo de trabajo de desarrollo y realizas cambios en la tarea dentro del contenedor, los resultados de la compilación se almacenarán en caché.

Inicia una shell en el contenedor de Bazel:

docker run --interactive --entrypoint=/bin/bash gcr.io/bazel-public/bazel:latest

Cada ID de contenedor es único. En las siguientes instrucciones, el contenedor era 5a99103747c6.

Clona el proyecto.

ubuntu@5a99103747c6:~$ git clone --depth 1 --branch 20220623.1 https://github.com/abseil/abseil-cpp.git && cd abseil-cpp/

Realiza una compilación habitual.

ubuntu@5a99103747c6:~/abseil-cpp$ bazel build //absl/...

Para compilar el proyecto con limpiadores, agrega la marca de compilación --config=asan|tsan|msan a fin de seleccionar AddressSanitizer (asan), ThreadSanitizer (tsan) o MemorySanitizer (msan) según corresponda.

ubuntu@5a99103747c6:~/abseil-cpp$ bazel build --config={asan | tsan | msan} -- //absl/... -//absl/types:variant_test

Explora el contenedor de Bazel

Si aún no lo hiciste, inicia una shell interactiva dentro del contenedor de Bazel.

docker run -it --entrypoint=/bin/bash gcr.io/bazel-public/bazel:latest
ubuntu@5a99103747c6:~$

Explora el contenido del contenedor.

ubuntu@5a99103747c6:~$ gcc --version
gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
ubuntu@5a99103747c6:~$ java -version
openjdk version "1.8.0_362"
OpenJDK Runtime Environment (build 1.8.0_362-8u372-ga~us1-0ubuntu1~20.04-b09)
OpenJDK 64-Bit Server VM (build 25.362-b09, mixed mode)
ubuntu@5a99103747c6:~$ python -V
Python 3.8.10
ubuntu@5a99103747c6:~$ bazel version
WARNING: Invoking Bazel in batch mode since it is not invoked from within a workspace (below a directory having a WORKSPACE file).
Extracting Bazel installation...
Build label: 6.2.1
Build target: bazel-out/k8-opt/bin/src/main/java/com/google/devtools/build/lib/bazel/BazelServer_deploy.jar
Build time: Fri Jun 2 16:59:58 2023 (1685725198)
Build timestamp: 1685725198
Build timestamp as int: 1685725198