扫码阅读
手机扫码阅读

Airbnb从Buck 迁移到 Bazel,大幅改善开发者体验

79 2024-07-18

我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。

查看原文:Airbnb从Buck 迁移到 Bazel,大幅改善开发者体验
文章来源:
InfoQ
扫码关注公众号

在构建管道迁移的潮流中,Airbnb 分享了他们弃用 Buck 并迁移到 Bazel 的经验。这一转变旨在为其后端和前端提供一个统一且高效的构建体验。Airbnb 的工程师们主要集中在构建配置和 IDE 集成两个方面的问题上。

由于 Bazel 和 Buck 在目录结构、命令行调用及使用了相同的配置语言 Starlark 方面的相似性,Airbnb 工程师能够相对简化构建配置的迁移。然而,由于两者在规则方面的差异,Airbnb 采用了创建一个包装层(shim layer)的方法来解决问题。他们为每个构建系统定义了规则,并通过 rules_shim 标识符与正确的目录关联起来。这一层特别对于处理 genrule 规则至关重要,它允许在两个构建系统中使用相同的脚本。

此外,为了支持条件配置,Airbnb 工程师实现了一个解决方案,通过移动一个抽象层,并使用 select 重新实现了两个系统都支持的命令行参数。在 IDE 集成方面,他们开发了自己的基于 Bazel 的 Xcode 工作区生成器,用 XcodeGen 替换了原有以 Buck 为中心的解决方案。

重要的是,Airbnb 工程师分三步执行迁移过程,以减少对开发者工作流的干扰。首先,他们将新生成器与现有 Buck 方案集成,确保兼容性。第二步,添加了与 Buck 命令相同的新 Bazel 命令,并允许在两者之间切换。最后,在新系统稳定后,去除对 Buck 的支持。

迁移到 Bazel 后,Airbnb 实现了显著的性能提升,XcodeGen 生成项目时间缩短了60%,Xcode 打开时间缩短了70%以上。此外,新的构建系统还缩短了构建时间,特别是增量构建时间,并为未来优化开辟了空间。

想要了解更多内容?

查看原文:Airbnb从Buck 迁移到 Bazel,大幅改善开发者体验
文章来源:
InfoQ
扫码关注公众号

为一线互联网公司核心技术人员提供优质内容。科技圈的观察者,前沿技术的传播者。

98 篇文章
浏览 13.7K
加入社区微信群
与行业大咖零距离交流学习
软件研发质量管理体系建设 白皮书上线