写点什么

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

评论

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

基于 Fluid+JindoCache 加速大模型训练的实践

阿里巴巴云原生

阿里云 云原生 Fluid

测试管理进阶 | 量力而行:避免成为替罪羊

测试人

软件测试 测试开发 测试管理

TPC-H 基准测试:Databend Cloud 与 Snowflake 对比

Databend

6个受欢迎的 Angular 库

伤感汤姆布利柏

干货 | 汽车行业研发效能提升的挑战与实践案例

思码逸研发效能

AI Agent深入浅出——以ERNIE SDK和多工具智能编排为例

飞桨PaddlePaddle

百度 BAIDU 百度飞桨 开发者说 AI Agent

AI给我们带来哪些方面惊喜呢?

小齐写代码

Google Adsense探索系列_第二弹(成功通过审核)

fkys

网站 Google 审核 adsense

小程序生命周期解析(从概念、启动、运行、销毁场景的全面解析)

天津汇柏科技有限公司

小程序开发 开发小程序

金芮学院派的优秀践行者

Geek_2d6073

2024年API经济的十大预测

幂简集成

API API经济

不懂技术也能轻松搭建网站!美国虚拟主机的简易指南!

一只扑棱蛾子

虚拟主机 美国虚拟主机

回顾 | E³CI效能认知与改进论坛,助力企业研发效能度量和提升

思码逸研发效能

海上风电:2024智慧海上风电场数字孪生系统

2D3D前端可视化开发

智慧电力 三维可视化 智慧风电场 智慧海上风电场 数字孪生风电场

深耕人工智能技术创新,天翼云荣获AAAI 2024竞赛冠军

编程猫

思码逸荣获汽车数智未来创新峰会“年度数字化创新产品奖”

思码逸研发效能

测试管理进阶 | 量力而行:避免成为替罪羊

测吧(北京)科技有限公司

测试管理忠告|量力而行:避免成为替罪羊

霍格沃兹测试开发学社

【线上直播】KaiwuDB 分布式系统 Range Split & Merge 原理详解

KaiwuDB

数据库 数据分区

墨天轮2023年度数据库获奖名单

墨天轮

数据库 opengauss oceanbase 达梦 polarDB

即时通讯技术文集(第33期):IM开发综合技术合集(Part6) [共12篇]

JackJiang

网络编程 即时通讯 IM

A Comprehensive Guide IPQ5018-IPQ6010-IPQ6018-IPQ8072-IPQ8074

wallyslilly

IPQ6010 ipq6018 IPQ8072

WiFi7-IPQ9574 and WiFi6 IPQ8072 cpus respectively represent the highest performance in the WiFi phase.

wifi6-yiyi

wifi router

【论文解读】| 通过大语言模型实现通用模糊测试

云起无垠

Web3.0区块链技术开发方案:mint铭文铭刻制度开发

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

Linux操作系统中软件安装

小魏写代码

万界星空科技电子机电行业MES系统,2000元/年起

万界星空科技

制造业 mes 电子 电子mes 电子行业

详解 API 设计最佳实践

Noah

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