50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

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:006145

评论

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

Straive收购SG Analytics

财见

停止将AI局限于个人效率提升的用途

财见

YashanDB数据库支持的存储引擎及选择建议

数据库砖家

为什么说大家低估了 AI 的实际使用规模?实际情况如何?

Baihai IDP

人工智能 程序员 AI

如何通过CrossOver软件运行Windows游戏?CrossOver安装steam教程

阿拉灯神丁

macos steam CrossOver Mac下载 Mac游戏推荐 雷神加速器

巨量IP代理“狂欢618 年中大放送”活动火热进行中

巨量HTTP

静态IP 代理IP http代理 socks5代理 隧道代理

鸿蒙星闪,智能生活交响乐的指挥家

脑极体

AI

极简开发、精准分发,构建鸿蒙生态服务分发智能便捷新体验

新消费日报

电商商品详情API接口:解锁电商创新与效率的新引擎

Noah

线上会议丨离散元仿真技术(DEM)如何解锁食品制造新‘食’代"?

Altair RapidMiner

AI 数据分析 制造业 EDEM 离散元仿真

海尔位列谷歌&凯度BrandZ中国全球化品牌第6,蝉联行业第一

财见

YashanDB数据库支持的编程语言及工具介绍

数据库砖家

移动行业减排8%,距净零仍需加速

财见

深入研究:1688商品评论数据接口,洞察用户心声

tbapi

1688商品评论接口 1688API 1688商品评论采集

YashanDB数据库支持的多种连接协议及性能比较

数据库砖家

最快24小时极速换新家,华为鸿蒙智家后装解决方案亮相HDC

新消费日报

YashanDB数据库支持的存储优化策略介绍

数据库砖家

YashanDB数据库支持的多维分析与智能报表功能

数据库砖家

YashanDB数据库支持的多维数据分析功能介绍

数据库砖家

鸿蒙运动项目开发:项目运行环境切换器

王二蛋和他的张大花

IBM研究:AI智能体应用崛起,企业超越试水阶段

财见

YashanDB数据库灾难恢复演练及风险管理实操

数据库砖家

YashanDB数据库支持的多种查询优化技术解析

数据库砖家

Golang基础笔记三之数组和切片

Hunter熊

golang 数组 切片 切片扩容 扩容规律

Alamofire - Swift 下的优雅 HTTP 网络库

qife122

swift HTTP

我的 Vibe Coding 的第一个项目

Immerse

嵌入式软件算法之PID闭环控制原理

芯动大师

嵌入式 PID 调参

YashanDB数据库灾难恢复方案与实施步骤

数据库砖家

AI 题库系统的主要功能

北京木奇移动技术有限公司

AI技术开发 软件外包公司 AI题库

AI 对冲基金模拟系统

qife122

金融科技 量化交易 AI投资

高度可定制的跨平台日历库

qife122

android 跨平台

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