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 |
---|---|
|
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> .
|
|
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. |
|
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 |
|
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 |
---|---|
|
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. |
|
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 .
|
|
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. |
|
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 |
---|---|
|
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> .
|
|
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 |
|
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 |
---|---|
|
Hace que las pruebas de Java esperen una conexión de depurador antes de ejecutarse. |
|
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.
|
|
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 |
---|---|
|
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 |
---|---|
|
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.
|
|
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. |
|
Limita la cantidad de CPU o RAM que consumen las acciones que se ejecutan de forma local. |
|
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 |
---|---|
|
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. |
|
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. |
|
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.
|
|
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> .
|
|
Es el valor que se pasará como instance_name en la API de ejecución remota.
|
|
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. |
|
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. |