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 compilaciones de lanzamiento. Se pueden seleccionar grupos de configuración adicionales con --config=<group>.
|
|
Bazel debería intentar continuar con la ejecución de compilación y prueba tanto como sea posible. De forma predeterminada, Bazel falla con rapidez. |
|
Cuando usas la ejecución o el almacenamiento en caché remotos (tanto en disco como remotos), puedes indicarle a
Bazel que
deseas 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, la máquina o el proyecto. |
|
De forma predeterminada, Bazel intenta evitar el spam de registros y solo imprime advertencias del compilador
y resultados de depuración de Starlark para los paquetes y subpaquetes solicitados en la
línea de comandos. Para inhabilitar todo el filtrado, establece
--auto_output_filter=none.
|
|
Te permite profundizar en los errores de la zona de pruebas. Para obtener detalles sobre por qué Bazel usa zonas de pruebas de forma predeterminada y qué se incluye en la zona de pruebas, consulta nuestra documentación sobre zonas de pruebas. |
|
Muestra una lista completa de todos los comandos que ejecuta Bazel durante una compilación, independientemente de si se realiza correctamente o no. |
Inicio
| Marcar | Descripción |
|---|---|
|
Puedes especificar las opciones predeterminadas de Bazel en .bazelrc archivos. Si
existen varios archivos .bazelrc, puedes seleccionar qué archivo
.bazelrc se usa agregando --bazelrc=<path to
the .bazelrc file>.
|
|
Limita la cantidad de RAM que usa el servidor de Bazel.
Por ejemplo, lo siguiente limita el tamaño de montón de Bazel a 3GB:
--host_jvm_args=-Xmx3g |
|
Controla el árbol de salida de Bazel. Bazel no almacena resultados de compilación, incluidos los registros, dentro del árbol fuente. En su lugar, usa un árbol de salida distinto para este propósito. |
Pruebas de Bazel
Las siguientes marcas están relacionadas 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 interrumpida, por lo general, deseas usar
--test_output=streamed para ver el resultado de la prueba en
tiempo real.
|
Ejecución de Bazel
Las siguientes marcas están relacionadas 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 con frecuencia para la depuración.
|
Opciones de bazelrc específicas del usuario
Las siguientes marcas están relacionadas 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 agregando
--disk_cache=<path> a tu comando.
|
|
Es la cantidad de trabajos simultáneos que se deben ejecutar. Por lo general, solo se requiere cuando se usa la ejecución remota, en la que un clúster de compilación remota ejecuta más trabajos de los que tienes núcleos 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 de zona de pruebas debajo de esta ruta de acceso. De forma predeterminada, Bazel ejecuta acciones locales en la zona de pruebas, lo que agrega una sobrecarga a la compilación. |
Opciones de bazelrc específicas del proyecto
Las siguientes marcas están relacionadas 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 cualquier falla de prueba. Esto es especialmente útil en la integración continua. Las pruebas que requieren más de un intento para aprobarse 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 la descarga de los resultados de compilación remotos cuya ruta de acceso 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 debe pasar como instance_name en la API de ejecución remota.
|
|
Si se especifica, se agrega una marca de tiempo a cada mensaje generado por Bazel que 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 puede ser más rápido. Esto depende de factores como la capacidad del clúster de compilación, la velocidad de la red y las demoras de la red. |