写点什么

Spotify 采用 Bazel 构建系统,构建时间缩短 75%

  • 2023-10-28
    北京
  • 本文字数:878 字

    阅读完需:约 3 分钟

大小:425.08K时长:02:25
Spotify采用Bazel构建系统,构建时间缩短75%

经过三年的试用,2020 年,Spotify决定采用Bazel作为Spotify iOS应用程序的官方构建系统。按照 Spotify 工程师 Patrick Balestra 的说法,这一切换将他们的构建时间减少了四分之三。

 

对于 Spotify 的 iOS 团队来说,重要的是切换过程不能中断开发或影响发行频率。在采用 Bazel 之前,Spotify 使用基于 YAML 的自定义 Ruby DSL,开发人员可以声明式地添加新模块,包括构建目标的规范、构建它所需的源文件、资源和依赖项。Balestra 说,因为可以重用相同的 DSL 脚本来生成 BUILD.bazel 文件而不是 Xcode.pxbproj 文件,这有助于确保我们无缝地切换到 Bazel。

 

他提到,切换到 Bazel 将构建加测试时间从 80 分钟降低到了 20 分钟。


从耗时最长的配置开始,我们将 CI 配置一个接一个地迁移到 Bazel。其中有一个配置包含超过 800 个测试目标、近 300 万行代码,使用 Xcode 构建花费的时间在 45 分钟以上。迁移到 Bazel 之后不到 10 分钟就可以构建完成。

 

根据 Balestra 的说法,这种改进主要得益于 Bazel 高效的远程缓存以及它对多台机器并行构建的支持。

 

不过,这个过程并不是说直接将构建文件输入到 Bazel 就可以了。相反,它会涉及到一个严谨的过程,即使用BuildBuddy提供的遥测洞察来识别性能问题和瓶颈(BuildBuddy 是一个旨在通过图形用户界面和命令行界面解锁 Bazel 功能的工具)。另外,借助bazel-diff,团队还可以更好地确定每个更改会影响到构建图的哪些部分,这样就可以尽可能地减少针对每个新构建所运行的测试集。

 

为了改善 Xcode 构建(开发人员在本地运行)和 Bazel 构建(在 CI 基础设施中使用)之间的共存,Spotify 采用了rules-xcodeproj。这使得他们可以直接从 Bazel 构建文件生成 Xcode 项目,而不是使用遗留的 Ruby/YAML 构建系统,这样就可以减少在本地构建成功但在 CI 中失败的情况,从而降低维护和故障排除的成本。

 

向 Bazel 迁移的最后一步是定义一个发布策略,在将 Bazel 构建直接部署到员工设备上两周之后,再将其推送给外部 Alpha 和 Beta 测试人员,最后向普通用户发布。

 

Balestra 说,所有这些做完之后,切换就成功了,故障和性能指标也没有显示什么异常。

 

原文链接:

https://www.infoq.com/news/2023/10/spotify-bazel-ios-transition/

2023-10-28 08:005857

评论

发布
暂无评论
发现更多内容

周爱民:捡豆吃豆的学问(上)

极客时间

Java 学习 极客时间

中年程序员都在想什么?

小智

程序员 中年 人生

PingCAP CEO 刘奇:如何聚集精英技术人才

TGO鲲鹏会

苏宁云商向江旭:是时候让技术成为新司机了!

TGO鲲鹏会

我一个做内容的人,为啥要研究西贝?

小盖

极客时间

聊聊宿华:利他、活在当下、做大梦

小盖

秦粤:说来说去,到底Serverless要解决什么问题?

极客时间

极客时间 Serverless

刘超的创作故事:“趣谈网络协议”专栏是怎么生产出来的?

极客时间

领导者应该承担一切责任,这才是领导力

小盖

读书笔记 团队管理 领导力

易宝支付 CTO 陈斌:如何做一个好的 CTO

TGO鲲鹏会

比尔·盖茨:事了拂衣去

池建强

微软 慈善 比尔·盖茨

周爱民:捡豆吃豆的学问(下)

极客时间

Java 学习 极客时间

Gary的唠叨(一):我们每个人都要提高自己的综合免疫力

小盖

Gary的唠叨 今日头条

吴咏炜:人生漫长,走点弯路在所难免

极客时间

学习 极客时间 编程

郭忆:数据中台,是陷阱?还是金钥匙?

极客时间

极客时间 数据中台

裁缝铺里开始创业,340亿美元卖身IBM,红帽创始人的传奇故事

小智

开源 红帽

团队提拔人,要讲究先“实至“再”名归”

霍太稳@极客邦科技

创业 团队管理 人力资源

华为不能代表中国开源,请勿捧杀鸿蒙、方舟

小智

华为 开源 鸿蒙 方舟

王天一:如何成为机器学习工程师?

极客时间

学习 极客时间

我的内容创作方法论

小智

原创 内容 创作

巨头过处,寸草不生

池建强

创业 互联网巨头

2020,你怎么看?

池建强

2020 疫情 黑天鹅

雷蓓蓓:“学习”到“实战”的距离,到底有多远?

极客时间

极客时间 项目管理

我看罗辑思维&得到简史

池建强

创业 产品 罗辑思维 得到

四火:聊一聊程序员学英语

极客时间

学习 极客时间

徐明强博士亲述:如何像微软一样建设企业文化,渡过至暗时刻

TGO鲲鹏会

微软 TGO鲲鹏会 企业文化

胡夕:阅读源码,逐渐成了职业进阶道路上的“必选项”

极客时间

kafka 极客时间 源码

人啊,永远是得自己成全自己

小盖

读书笔记

看似努力,或许你是在浪费生命

霍太稳@极客邦科技

学习 深度思考 读书笔记 高效工作

世界很大,你不必抗下全部

霍太稳@极客邦科技

创业 身心健康 生涯规划

那个忽悠了马云的“骗子”王坚,私下里是什么样的?

小智

云计算 阿里巴巴 阿里云

Spotify采用Bazel构建系统,构建时间缩短75%_Android/iOS_Sergio De Simone_InfoQ精选文章