Hoja de referencia de la bandera de Bazel

Navegar por la extensa lista de marcas de línea de comandos de Bazel puede ser un desafío. En esta página, se describen las marcas más importantes que debes conocer.

Opciones generales útiles

Las siguientes marcas deben establecerse de forma explícita en la línea de comandos.

Marcar Descripción

--config

Puedes organizar las marcas en un archivo .bazelrc en configuraciones, como las de depuración o compilación de lanzamiento. Se pueden seleccionar grupos de configuración adicionales con --config=<group>.

--keep_going

Bazel debe intentar, en la medida de lo posible, continuar con la compilación y la ejecución de pruebas. De forma predeterminada, Bazel falla de forma inmediata.

--remote_download_outputs

Cuando usas la ejecución o la caché remotas (tanto en el disco como en la ubicación remota), puedes indicarle a Bazel que quieres descargar todos los artefactos de compilación (intermedios) de la siguiente manera:
--remote_download_outputs=all
De forma predeterminada, Bazel solo descarga artefactos de nivel superior, como el binario final, y los artefactos intermedios que son necesarios para las acciones locales.

--stamp

Agrega información de compilación (usuario, marca de tiempo) a los objetos binarios.

Descubre problemas de compilación y prueba

Las siguientes marcas pueden ayudarte a comprender mejor los errores de compilación o prueba de Bazel.

Marcar Descripción

--announce_rc

Muestra qué marcas se establecen de forma implícita a través de archivos .bazelrc definidos por el usuario, por la máquina o por el proyecto.

--auto_output_filter

De forma predeterminada, Bazel intenta evitar el spam de registro y solo imprime advertencias del compilador y el resultado de depuración de Starlark para los paquetes y subpaquetes solicitados en la línea de comandos. Para inhabilitar todo el filtrado, configura --auto_output_filter=none.

--sandbox_debug

Te permite desglosar los errores de la zona de pruebas. Para obtener detalles sobre por qué Bazel coloca las compilaciones en la zona de pruebas de forma predeterminada y qué se coloca en la zona de pruebas, consulta nuestra documentación sobre la zona de pruebas.

--subcommands (-s)

Muestra una lista completa de cada comando que ejecuta Bazel durante una compilación, independientemente de si se realiza correctamente o falla.

Inicio

Marcar Descripción

--bazelrc

Puedes especificar las opciones predeterminadas de Bazel en los archivos .bazelrc. Si existen varios archivos .bazelrc, puedes seleccionar cuál se usa agregando --bazelrc=<path to the .bazelrc file>.

--host_jvm_args

Limita la cantidad de RAM que usa el servidor de Bazel. Por ejemplo, el siguiente comando limita el tamaño del montón de Bazel a 3 GB:
--host_jvm_args=-Xmx3g

--output_base

Controla el árbol de salida de Bazel. Bazel no almacena los resultados de la compilación, incluidos los registros, dentro del árbol de fuentes. En su lugar, usa un árbol de salida distinto para este fin.

Pruebas de Bazel

Las siguientes marcas se relacionan con la prueba de Bazel.

Marcar Descripción

--java_debug

Hace que las pruebas de Java esperen una conexión de depurador antes de ejecutarse.

--runs_per_test

Es la cantidad de veces que se deben ejecutar las pruebas. Por ejemplo, para ejecutar pruebas N veces, agrega --runs_per_test=N. Esto puede ser útil para depurar pruebas inestables y ver si una corrección hace que una prueba se apruebe de forma coherente.

--test_output

Especifica el modo de salida. De forma predeterminada, Bazel captura el resultado de la prueba en archivos de registro locales. Cuando iteras en una prueba dañada, por lo general, debes usar --test_output=streamed para ver el resultado de la prueba en tiempo real.

Ejecución de Bazel

Las siguientes marcas se relacionan con la ejecución de Bazel.

Marcar Descripción

--run_under

Cambia la forma en que se invocan los ejecutables. Por ejemplo, --run_under="strace -c" se usa comúnmente para la depuración.

Opciones de bazelrc específicas del usuario

Las siguientes marcas se relacionan con las opciones .bazelrc específicas del usuario.

Marcar Descripción

--disk_cache

Es una ruta de acceso a un directorio en el que Bazel puede leer y escribir acciones y resultados de acciones. Si el directorio no existe, se creará. Puedes compartir artefactos de compilación entre varias ramas o espacios de trabajo, y acelerar las compilaciones de Bazel si agregas --disk_cache=<path> a tu comando.

--jobs

Es la cantidad de trabajos simultáneos que se ejecutarán. Por lo general, esto solo es necesario cuando se usa la ejecución remota, en la que un clúster de compilación remoto ejecuta más trabajos que los núcleos que tienes de forma local.

--local_resources

Limita la cantidad de CPU o RAM que consumen las acciones que se ejecutan de forma local.

--sandbox_base

Permite que la zona de pruebas cree sus directorios en esta ruta. De forma predeterminada, Bazel ejecuta acciones locales en la zona de pruebas, lo que agrega cierta sobrecarga a la compilación.

Opciones de bazelrc específicas del proyecto

Las siguientes marcas se relacionan con las opciones .bazelrc específicas del proyecto.

Marcar Descripción

--flaky_test_attempts

Vuelve a intentar cada prueba hasta la cantidad especificada de veces en caso de que se produzca un error. Esto es especialmente útil en la integración continua. Las pruebas que requieren más de un intento para aprobar se marcan como FLAKY en el resumen de la prueba.

--remote_cache

Es un URI de un extremo de almacenamiento en caché. Configurar el almacenamiento en caché remoto puede ser una excelente manera de acelerar las compilaciones de Bazel. Se puede combinar con una caché de disco local.

--remote_download_regex

Fuerza que se descarguen los resultados de compilación remota cuya ruta coincida con este patrón, independientemente de la configuración de --remote_download_outputs. Se pueden especificar varios patrones repitiendo esta marca.

--remote_executor

HOST o HOST:PORT de un extremo de ejecución remota. Pasa esto si usas un servicio de ejecución remota. A menudo, deberás agregar --remote_instance_name=<name>.

--remote_instance_name

Es el valor que se pasará como instance_name en la API de ejecución remota.

--show-timestamps

Si se especifica, se agrega una marca de tiempo a cada mensaje que genera Bazel, en la que se especifica la hora en la que se mostró el mensaje. Esto es útil en los sistemas de CI para comprender rápidamente qué paso tardó cuánto tiempo.

--spawn_strategy

Incluso con la ejecución remota, ejecutar algunas acciones de compilación de forma local podría ser más rápido. Esto depende de factores como la capacidad de tu clúster de compilación, la velocidad de la red y las demoras de la red.