Redian新闻
>
Spotify 如何切换到 Bazel 进行 iOS App 构建

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%,分析师:该行为无异于自毁长城

微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
前三季度中国演出票房超315亿,索尼音乐在中国首次投资,Spotify明确版税结算模式变化细节《歌德堡变奏曲1358》苹果收购古典音乐厂牌,Spotify限制免费用户访问歌词,Deezer和环球音乐推出首个以艺术家为中心的流媒体分配模型SpringBoot + Docker 实现一次构建到处运行~如何在安卓上切换成竖屏模式或横屏模式【行业日报】Meta与IBM联手研发AI!Spotify再度裁员!华尔街股市再创新高!【“骑”乐无穷】D0 做一件想做的事情福岛排水和大肠刺身如何切花椰菜[单车] 女王的最终归属:Specialized Crux"妈妈让我来自首",7岁男孩在派出所写下"bǎozhèng书"修复无法添加 PPA:“This PPA does not support jammy” 错误 | Linux 中国麻州黄金地段,自住投资两相宜--本周房源精选--Melrose/Lynnfield/Belmont使用 mkosi 构建 RHEL 和 RHEL UBI 镜像 | Linux 中国麻州黄金地段,自住投资两相宜--本周房源精选--Lynnfield/Belmont/Melrose切换到国内云服务成本降低50%,这家日本游戏公司真这么干了!SpringBoot 采用 JsonSerializer 和 Aop 实现可控制的数据脱敏Spotify 开源 ANN 搜索库 Voyager,比Annoy快10倍转载:App Store 的 AI 相机应用程序来了麻州黄金地段,自住投资两相宜--本周房源精选--Lynnfield/Melrose/Belmont如何穿越周期?"猎手"丁靖斐:市场的"磨底期",也是投资的"进化期"!Spotify推新付费推广工具,Stability AI发布AI音乐工具,大型演出活动面向公众销售门票比例不得低于85%千万别用PPT切换转场!我错了!美国旧金山街头实验!小彭用熊猫玩偶换到了什么?Boots/Spotify学生打折!资生堂6折清仓!英国阿迪官网半价!GG生发限时5折!SpringBoot 实现动态切换数据源,这样做才更优雅!美国年轻人流行的BuyNothing app,很认可它的价值观NeurIPS 2023 Spotlight | 面向通用决策场景的MCTS基准框架:LightZeroNotice on Walk-in Without Appointment Visa Application Service硬核观察 #1174 OpenELA 发布用于构建 RHEL 8/9 衍生版的源代码Spotify 或是Apple music 组团,有人感兴趣吗?​Spotify:计划提高订阅价格,未来可期Costco本周优惠: Instant Pot Gourmet Crisp 8L空气炸锅+压力锅,$149.99,省$100!《花尾渡》(小说) 第十九章 断肠人与新船长【直播在即】我娃因超龄遭拒,CSPA新政能救吗?(点文末"阅读原文""进入课程"直接收听)凤求凰-司马相如 古琴"蜗牛也是牛"!千亿公募"黄金搭档":用"蜗牛态度"做固收,挖掘"善良"的金融逻辑下手太狠! 巨头公司CBC和Spotify同时宣布大裁员! 共计2100人要遭殃!在Dating app 海王撒网 Update
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。