报告问题 查看来源 Nightly · 8.3 · 8.2 · 8.1 · 8.0 · 7.6
浏览 Bazel 庞大的命令行标志列表可能是一项挑战。本页重点介绍您需要了解的最关键标志。
实用的常规选项
以下标志应在命令行中明确设置。
标志 | 说明 |
---|---|
|
您可以将 .bazelrc 文件中的标志整理到配置中,例如调试或发布 build 的配置。您可以使用 --config=<group> 选择其他配置组。
|
|
Bazel 应尽可能继续执行构建和测试。默认情况下,Bazel 会立即失败。 |
|
使用远程执行或缓存(包括磁盘缓存和远程缓存)时,您可以向 Bazel 发出信号,表明您要下载所有(中间)构建工件,如下所示:
--remote_download_outputs=all |
|
向二进制文件添加 build 信息(用户、时间戳)。 |
发现 build 和测试问题
以下标志有助于您更好地了解 Bazel 构建或测试错误。
标志 | 说明 |
---|---|
|
显示通过用户定义、机器定义或项目定义的 .bazelrc 文件隐式设置的标志。 |
|
默认情况下,Bazel 会尝试防止日志泛滥,并且仅针对在命令行中请求的软件包和子软件包打印编译器警告和 Starlark 调试输出。如需停用所有过滤功能,请设置 --auto_output_filter=none 。
|
|
可让您深入了解沙盒错误。如需详细了解 Bazel 为何默认对 build 进行沙盒处理以及哪些内容会被沙盒处理,请参阅我们的沙盒处理文档。 |
|
显示 Bazel 在 build 期间运行的每个命令的完整列表,无论命令是成功还是失败 |
启动
标志 | 说明 |
---|---|
|
您可以在 .bazelrc 文件中指定默认的 Bazel 选项。如果存在多个 .bazelrc 文件,您可以通过添加 --bazelrc=<path to
the .bazelrc file> 来选择要使用的 .bazelrc 文件。
|
|
限制 Bazel 服务器使用的 RAM 量。
例如,以下命令将 Bazel 堆大小限制为 3 GB:
--host_jvm_args=-Xmx3g |
|
控制 Bazel 的输出树。Bazel 不会将构建输出(包括日志)存储在源代码树本身中。相反,它会使用不同的输出树来实现此目的。 |
Bazel 测试
以下标志与 Bazel 测试相关
标志 | 说明 |
---|---|
|
使 Java 测试在执行之前等待调试程序连接。 |
|
运行测试的次数。例如,如需运行 N 次测试,请添加 --runs_per_test=N 。这有助于调试不稳定的测试,并查看修复是否能使测试始终通过。
|
|
指定输出模式。默认情况下,Bazel 会将测试输出捕获到本地日志文件中。在迭代修复损坏的测试时,您通常需要使用 --test_output=streamed 实时查看测试输出。
|
Bazel run
以下标志与 Bazel 运行相关。
标志 | 说明 |
---|---|
|
更改了可执行文件的调用方式。例如,--run_under="strace -c" 通常用于调试。
|
特定于用户的 bazelrc 选项
以下标志与用户特定的 .bazelrc 选项相关。
标志 | 说明 |
---|---|
|
Bazel 可在其中读取和写入操作及操作输出的目录的路径。
如果该目录不存在,系统会创建该目录。
您可以在多个分支或工作区之间共享 build 制品,并通过在命令中添加 --disk_cache=<path> 来加快 Bazel build 速度。
|
|
要运行的并发作业数。 通常只有在使用远程执行时才需要此标志,因为远程构建集群执行的作业数量比本地拥有的核心数量更多。 |
|
限制本地运行的操作消耗的 CPU 或 RAM 数量。 |
|
允许沙盒在此路径下创建其沙盒目录。默认情况下,Bazel 会在沙盒中执行本地操作,这会增加构建开销。 |
项目特有的 bazelrc 选项
以下标志与项目特定的 .bazelrc 选项相关。
标志 | 说明 |
---|---|
|
如果任何测试失败,则重试每次测试,重试次数最多为指定次数。这在持续集成方面尤其有用。需要多次尝试才能通过的测试会在测试摘要中标记为 FLAKY。 |
|
缓存端点的 URI。设置远程缓存是加快 Bazel 构建速度的绝佳方式。它可以与本地磁盘缓存结合使用。 |
|
强制下载路径与此模式匹配的远程 build 输出,无论 --remote_download_outputs 设置如何。重复使用此标志可指定多个模式。
|
|
远程执行端点的 HOST 或 HOST:PORT 。如果您使用的是远程执行服务,请传递此参数。您通常需要添加 --remote_instance_name=<name> 。
|
|
在远程执行 API 中作为 instance_name 传递的值。
|
|
如果指定,则会向 Bazel 生成的每条消息添加一个时间戳,用于指定显示消息的时间。这在 CI 系统中非常有用,可用于快速了解哪个步骤花费了多长时间。 |
|
即使使用远程执行,在本地运行某些 build 操作也可能会更快。这取决于多种因素,例如 build 集群的容量、网络速度和网络延迟。 |