Bazel 标志备忘单

报告问题 查看来源 Nightly · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

浏览 Bazel 庞大的命令行标志列表可能是一项挑战。本页重点介绍您需要了解的最关键标志。

实用的常规选项

以下标志应在命令行中明确设置。

标志 说明

--config

您可以将 .bazelrc 文件中的标志整理到配置中,例如调试或发布 build 的配置。您可以使用 --config=<group> 选择其他配置组。

--keep_going

Bazel 应尽可能继续执行构建和测试。默认情况下,Bazel 会立即失败。

--remote_download_outputs

使用远程执行或缓存(包括磁盘缓存和远程缓存)时,您可以向 Bazel 发出信号,表明您要下载所有(中间)构建工件,如下所示:
--remote_download_outputs=all
默认情况下,Bazel 只会下载顶级制品(例如最终二进制文件)以及本地操作所需的中间制品。

--stamp

向二进制文件添加 build 信息(用户、时间戳)。

发现 build 和测试问题

以下标志有助于您更好地了解 Bazel 构建或测试错误。

标志 说明

--announce_rc

显示通过用户定义、机器定义或项目定义的 .bazelrc 文件隐式设置的标志。

--auto_output_filter

默认情况下,Bazel 会尝试防止日志泛滥,并且仅针对在命令行中请求的软件包和子软件包打印编译器警告和 Starlark 调试输出。如需停用所有过滤功能,请设置 --auto_output_filter=none

--sandbox_debug

可让您深入了解沙盒错误。如需详细了解 Bazel 为何默认对 build 进行沙盒处理以及哪些内容会被沙盒处理,请参阅我们的沙盒处理文档

--subcommands (-s)

显示 Bazel 在 build 期间运行的每个命令的完整列表,无论命令是成功还是失败

启动

标志 说明

--bazelrc

您可以在 .bazelrc 文件中指定默认的 Bazel 选项。如果存在多个 .bazelrc 文件,您可以通过添加 --bazelrc=<path to the .bazelrc file> 来选择要使用的 .bazelrc 文件。

--host_jvm_args

限制 Bazel 服务器使用的 RAM 量。 例如,以下命令将 Bazel 堆大小限制为 3 GB:
--host_jvm_args=-Xmx3g

--output_base

控制 Bazel 的输出树。Bazel 不会将构建输出(包括日志)存储在源代码树本身中。相反,它会使用不同的输出树来实现此目的。

Bazel 测试

以下标志与 Bazel 测试相关

标志 说明

--java_debug

使 Java 测试在执行之前等待调试程序连接。

--runs_per_test

运行测试的次数。例如,如需运行 N 次测试,请添加 --runs_per_test=N。这有助于调试不稳定的测试,并查看修复是否能使测试始终通过。

--test_output

指定输出模式。默认情况下,Bazel 会将测试输出捕获到本地日志文件中。在迭代修复损坏的测试时,您通常需要使用 --test_output=streamed 实时查看测试输出。

Bazel run

以下标志与 Bazel 运行相关。

标志 说明

--run_under

更改了可执行文件的调用方式。例如,--run_under="strace -c" 通常用于调试。

特定于用户的 bazelrc 选项

以下标志与用户特定的 .bazelrc 选项相关。

标志 说明

--disk_cache

Bazel 可在其中读取和写入操作及操作输出的目录的路径。 如果该目录不存在,系统会创建该目录。 您可以在多个分支或工作区之间共享 build 制品,并通过在命令中添加 --disk_cache=<path> 来加快 Bazel build 速度。

--jobs

要运行的并发作业数。 通常只有在使用远程执行时才需要此标志,因为远程构建集群执行的作业数量比本地拥有的核心数量更多。

--local_resources

限制本地运行的操作消耗的 CPU 或 RAM 数量。

--sandbox_base

允许沙盒在此路径下创建其沙盒目录。默认情况下,Bazel 会在沙盒中执行本地操作,这会增加构建开销。

项目特有的 bazelrc 选项

以下标志与项目特定的 .bazelrc 选项相关。

标志 说明

--flaky_test_attempts

如果任何测试失败,则重试每次测试,重试次数最多为指定次数。这在持续集成方面尤其有用。需要多次尝试才能通过的测试会在测试摘要中标记为 FLAKY

--remote_cache

缓存端点的 URI。设置远程缓存是加快 Bazel 构建速度的绝佳方式。它可以与本地磁盘缓存结合使用。

--remote_download_regex

强制下载路径与此模式匹配的远程 build 输出,无论 --remote_download_outputs 设置如何。重复使用此标志可指定多个模式。

--remote_executor

远程执行端点的 HOSTHOST:PORT。如果您使用的是远程执行服务,请传递此参数。您通常需要添加 --remote_instance_name=<name>

--remote_instance_name

在远程执行 API 中作为 instance_name 传递的值。

--show-timestamps

如果指定,则会向 Bazel 生成的每条消息添加一个时间戳,用于指定显示消息的时间。这在 CI 系统中非常有用,可用于快速了解哪个步骤花费了多长时间。

--spawn_strategy

即使使用远程执行,在本地运行某些 build 操作也可能会更快。这取决于多种因素,例如 build 集群的容量、网络速度和网络延迟。