2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

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

评论

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

不安全的服务器和云服务器:远程工作如何增加了黑客可以攻击的攻击面

九河云安全

网络攻防学习笔记 Day101

穿过生命散发芬芳

态势感知 网络攻防 8月日更

从平台到生态,钉钉、飞书和企业微信的巨头之争

ToB行业头条

钉钉 企业微信 飞书

2021 年云安全:基本工具和最佳实践业务指南

九河云安全

耗时三年才总结出了这份Alibaba(P5-P9)学习进阶路线图

Java架构追梦

Java 阿里巴巴 架构 面试 架构成长路线

堡垒机价格与什么有关?价格差别大吗?

行云管家

云计算 堡垒机

Alibaba开发十年,写出这本“MQ技术手册”,看完我愣住了

Java~~~

Java kafka 面试 MQ 架构师

如何利用FL Studio进行听湿录干的声音录制

懒得勤快

市场战略再升级 解析融云的生态平台+纵深发展

融云 RongCloud

【等保测评】江西等保测评机构只有3家吗?都在哪里?

行云管家

等保 等级保护 等保测评 等保评测

前端性能优化|什么是防抖和节流?

青云技术社区

JavaScript 大前端 防抖节流 函数防抖

黑科技解密!实现socket进程间迁移

Java 程序员 架构 面试 架构师

完美!腾讯技术官发布Java零基础就业宝典,不用再怀疑人生了

Java~~~

Java spring 面试 微服务 架构师

Alibaba内部出品“Java初学者宝典”,让你就业没压力

Java~~~

Java 面试 JVM 多线程 架构师

Qunar 大讲堂问题排查

Qunar技术沙龙

问题处理 问题排查 管理系统 开发管理 问题总结

史上最全的服务器选择指南,这六点你必须知道!

九河云安全

快速发展的互联网通信,站在开发者背后的融云

融云 RongCloud

Java书单-比较全的一篇

汤圆学Java

程序员

IOS技术分享| 互动连麦场景实现

anyRTC开发者

ios 音视频 移动开发 视频直播 直播连麦

模型训练语料少?知识蒸馏解决烦恼

LigaAI

人工智能 神经网络 深度学习 模型训练 nlp

价值连城 人工智能的通识课 - 吴恩达Andrew Ng AI For Everyone John 易筋 ARTS 打卡 Week 59

John(易筋)

ARTS 打卡计划

企业架构概述

涛哥 数字产品和业务架构

高防服务器在使用过程中可以做到高效、稳定的防止钓鱼攻击

九河云安全

企业上云之前选择服务器类型的几点建议

九河云安全

保险=诈骗?区块链赋予保险的“四个机会”

旺链科技

区块链 保险业 信任构建

从外卖员到程序员,自学3年终于转行成功,三面“拿下”拼多多

Java~~~

Java spring 面试 微服务 JVM

如果用柔性屏做雨伞,那雨伞就不仅仅是雨伞了

船医特拉法尔加

开发者工具

爱了!Alibaba技术官甩出的SpringCloud笔记,GitHub已标星81.6k

Java~~~

Java 面试 微服务 Spring Cloud 架构师

FastApi-09-模型嵌套

Python研究所

FastApi 8月日更

OAuth2.0授权码模式实战

码农参上

OAuth 2.0 8月日更

限量!Alibaba首发“Java成长笔记”,差距不止一点点

Java~~~

Java spring 面试 微服务 架构师

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