Spotify 如何切换到 Bazel 进行 iOS App 构建

作者 | Sergio De Simone 译者 | 平川 策划 | 丁晓昀

经过三年的试用,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/

声明:本文为 InfoQ 翻译,未经许可禁止转载。

今日好文推荐智谱 AI“超 25 亿融资”的背后
是时候彻底放弃“高分低能”的 Leetcode了:AI 时代的面试需要大变革!B 站广州研发工作室解散;外媒曝光苹果中国区丑闻;OpenAI 被曝已叫停新大模型项目 | Q资讯
“MySQL 之父”的 MariaDB 要完蛋了?叫停两款核心产品并裁员 28%,分析师:该行为无异于自毁长城

相关推荐

  • 抗住百万级流量并发,快手 + 阿里云混合云弹性调度系统的建设之路
  • 抖音大型直播画质优化实践:“62 亿人次观看的亚运会直播”有哪些创新领域
  • 语雀突发 P0 级事故!宕机 8 小时被网友怒喷,运维又背锅?
  • 快收藏!!Google内部Python代码风格指南(中文版)
  • 36个顶级数据分析方法与模型!
  • 内推|【企知道】自然语言开发工程师
  • 大规模数据分析避坑指南-实战篇
  • 探索大模型技术在自智网络方向的应用前景(推荐收藏)
  • 与创新者同行,Doris Summit Asia 2023 线下技术峰会圆满落幕!
  • 苹果“套娃”式扩散模型,训练步数减少七成!
  • 北大数学课,启用AI助教
  • 老黄苏妈齐聚现场!芯片巨头围观首款AI PC,联想造
  • 当AI有了审美灵魂,作画已经真假难辨了!划重点:免费
  • 全球最强CPU一夜易主,130亿参数大模型被塞进PC,没网也能生成邮件周报PPT
  • 清华&通院让AI智能体成功识破谎言!ReCon框架玩转「阿瓦隆」,三思后行+换位思考
  • LLM一句话瞬间生成3D世界,未公布代码已获141星!或将引发3D建模行业革命
  • Bengio、Hinton、张亚勤等AI大佬再发联名信!AI太危险,我们需要重新定位
  • 突发!英伟达H800/A800禁令竟提前生效,但4090意外豁免
  • 实测商汤医疗健康大模型「大医」:紧贴实际场景,可塑性超强,还能自定义提示工程!
  • DISC-FinLLM:复旦大学团队发布中文智慧金融系统,采用多专家微调框架