构建系统是工程组织最重要的部分之一 因为每位开发者每天可能会与它交互数十次或数百次 。为了在组织扩容时提高开发者 的工作效率,必须使用功能齐全的构建系统。对于个人开发者来说,只需编译代码即可,因此构建系统似乎是多余的。但从更大的规模来看,构建系统有助于管理 共享依赖项,例如依赖于代码库的另一部分或外部资源(例如库)。构建系统有助于确保您 在开始构建代码之前拥有构建代码所需的一切。构建 系统还可以帮助工程师共享 资源和结果,从而提高速度。
本部分介绍了构建和构建系统的一些历史和基础知识, 包括 Bazel 的设计决策。如果您 熟悉基于工件的构建系统(例如 Bazel、Buck 和 Pants),则可以跳过本部分,但本部分提供了一个有用的概览,可帮助您了解为什么 基于工件的构建系统非常适合实现扩容。
-
如果您之前未使用过构建系统,请从这里开始。本页介绍了为什么 应该使用构建系统,以及为什么当您的组织开始超出几位开发者的规模时,编译器和构建脚本不是 最佳选择。
-
本页讨论了基于任务的构建系统(例如 Make、Maven 和 Gradle)及其一些挑战。
-
本页讨论了基于工件的构建系统,以应对基于任务的构建系统的痛 点。
-
本页介绍了分布式构建,即在 本地机器之外执行的构建。这需要更强大的基础架构来共享 资源和构建结果(真正的魔法就在这里!)。
-
本页介绍了大规模依赖项的一些复杂性以及 应对这些复杂性的策略。