Bazel 简介

报告问题 查看来源 每晚 · 7.2。 · 7.1敬上 · 7.0 · 6.5 · 6.4

Bazel 是一个类似于 Make、Maven 和 Gradle 的开源构建和测试工具。 它使用人类可读的高级 build 语言。Bazel 支持 并针对多个平台构建输出。Bazel 支持 多个代码库和大量用户的大型代码库。

优势

Bazel 具有以下优势:

  • 高级 build 语言。Bazel 使用直观易懂的 用于描述项目的构建属性 语义级别。与其他工具不同,Bazel 基于概念 库、二进制文件、脚本和数据集,保护您免受 编写单个调用所需的复杂程度,例如编译器和 链接程序。

  • Bazel 既快速又可靠。Bazel 会缓存之前完成的所有工作 会跟踪文件内容和构建命令的更改。这样,Bazel 知道何时需要重新构建,并仅进行重建。要进一步 您可以快速设置项目,以便在高度云环境中 并行和增量方式。

  • Bazel 是多平台模式Bazel 可在 Linux、macOS 和 Windows 上运行。Bazel 可以为多个平台(包括 桌面设备、服务器和移动设备。

  • Bazel 扩缩能力。Bazel 在处理超过 10 万项的构建时,能够保持敏捷性 源文件。它适用于多个代码库和数十个用户群 成千上万个。

  • Bazel 具有可扩展性。许多语言 而您可以扩展 Bazel 来支持 框架。

使用 Bazel

要使用 Bazel 构建或测试项目,您通常需要执行以下操作:

  1. 设置 Bazel。下载并安装 Bazel

  2. 设置项目工作区, Bazel 在其中查找 build 输入和 BUILD 文件的目录,以及 存储构建输出。

  3. 编写一个 BUILD 文件,告诉 Bazel 要构建的内容以及如何构建 构建容器。

    如需编写 BUILD 文件,请使用以下代码声明构建目标: Starlark,一种网域特有的语言。(查看示例 此处)。

    构建目标指定 Bazel 将构建的一组输入制品 其依赖项、Bazel 进行构建时使用的构建规则,以及选项 配置构建规则的应用

    构建规则指定 Bazel 将使用的构建工具,如编译器和 链接器及其配置Bazel 附带了许多构建规则 涵盖 Google Cloud 上受支持的语言中最常见的工件类型 支持的平台

  4. 通过命令行运行 Bazel。Bazel 将输出放置在工作区中。

除了构建应用之外,你还可以使用 Bazel 运行 测试查询 build 来跟踪代码中的依赖项

Bazel 构建流程

在运行构建或测试时,Bazel 会执行以下操作:

  1. 加载与目标相关的 BUILD 文件。

  2. 分析输入及其 dependencies,应用指定的 build 并生成一个操作, 图表。

  3. 对输入执行构建操作,直到最终构建输出 。

由于之前的所有构建工作都已缓存,因此 Bazel 可以识别和重复使用已缓存的 并且仅重新构建或重新测试更改的内容。为了进一步强制执行 你可以设置 Bazel 来运行构建和测试 封闭沙盒,最大限度地减少偏差 并最大限度地提高可重现性

操作图

这个操作图显示了构建工件、它们之间的关系 以及 Bazel 将要执行的构建操作有了这个图表,Bazel track 是 文件内容以及对操作(例如 build 或 test 命令)的更改,以及 了解之前已经完成的构建工作。通过该图表,您还可以 轻松在代码中跟踪依赖项

入门教程

要开始使用 Bazel,请参阅使用入门或跳转到 直接转到 Bazel 教程: