写点什么

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

评论

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

天翼云以领先云网算力,为工业信息化筑牢算力底座

极客天地

加速深度学习创新的引擎

百度开发者中心

大模型 LLM LLMOps

大模型训练,提升AI能力的关键

百度开发者中心

深度学习 大模型

访问控制中PIP的典型流程和关键点思考

权说安全

访问控制

透明格栅屏与传统LED显示屏有什么区别?透明格栅屏用在什么地方?

Dylan

产品 LED LED显示屏

软件测试|第二届、第三届<火焰杯>软件测试开发选拔赛河北赛区颁奖典礼落幕

霍格沃兹测试开发学社

飞码LowCode前端技术系列(一):数据结构设计 | 京东云技术团队

京东科技开发者

低代码 营销 企业号10月PK榜 web页面搭建

第5期 | GPTSecurity周报

云起无垠

如何让大模型生成更准确、可靠的结果?

鼎道智联

GPT

一次单据图片处理的优化实践 | 京东物流技术团队

京东科技开发者

性能优化 图片处理 pdfbox 企业号10月PK榜

IDEA工具第二篇:自定义Java方法注释模板 | 京东云技术团队

京东科技开发者

Java IDEA 参数 注释 企业号10月PK榜

仅需2分钟 让智慧助手小艺用你的声音时刻陪伴老人

最新动态

面对“双十一”这样的大促,品牌方还能多做些什么?

博文视点Broadview

自定义MyBatis拦截器更改表名

emanjusaka

Java mybatis

软件测试|华新学院在2022 年全国大学生“火焰杯”软件测试高校就业选拔赛取得佳绩

霍格沃兹测试开发学社

四川华新学院在“火焰杯”软件测试高校就业选拔赛取得佳绩

测试人

软件测试

ARB链(Arbitrum)ARBT代币合约质押挖矿系统开发(源码技术搭建)

l8l259l3365

NFTScan | 10.16~10.22 NFT 市场热点汇总

NFT Research

NFT NFTScan nft工具

大模型训练,提升AI能力的关键

百度开发者中心

大模型训练 LLM

一种基于闭包函数实现自动化框架断言组件的设计实践 | 京东物流技术团队

京东科技开发者

闭包函数 企业号10月PK榜 测试脚本 断言组件

OpenHarmony Meetup成都站招募令

OpenHarmony开发者

OpenHarmony

美国站群服务器配置指南,帮你轻松管理多个网站

一只扑棱蛾子

站群服务器 美国服务器 美国站群服务器

LLM 新缺陷曝光,自我纠正成功率仅 1%;苹果超 95% 产品仍在中国制造丨 RTE 开发者日报 Vol.72

RTE开发者社区

【CIKM 2023】扩散模型加速采样算法OLSS,大幅提升模型推理速度

阿里云大数据AI技术

算法

深度学习应用开发示例之“定位编码”

矩视智能

深度学习 机器视觉

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