20 秒内出包!iOS 极限压榨构建机性能!
2023-11-15 18:52:11
在现代敏捷开发流程中,快速构建和分发测试包对于保证软件质量和缩短上市时间至关重要。然而,传统的构建机通常需要花费大量时间来完成出包过程,这会成为 DevOps 流程中的瓶颈。
本文分享了一位 iOS 工程师的实践经验,他通过优化构建机配置,将测试包出包时间从 25 分钟缩短到 20 秒以内。这极大地提高了测试效率,有助于 DevOps 流程的自动化和 App 分发的敏捷性。
优化构建机配置
构建机配置对出包时间有重大影响。该工程师首先分析了构建机的资源利用情况,发现 CPU 和内存利用率都很低。于是,他将构建机的 CPU 核数从 2 提升到 4,并将内存从 8GB 增加到 16GB。
此外,他还优化了构建环境,使用了更快的编译器版本和更精简的依赖项。例如,他将 Xcode 的版本升级到最新版,并使用 Cocoapods 替代 Carthage 管理依赖项。
并行构建
为了进一步提升出包速度,该工程师引入了并行构建技术。通过使用多个并行运行的进程,构建机可以同时处理多个任务,从而缩短总体构建时间。
在 Xcode 中,可以通过设置 XCODE_PARALLEL_BUILD_SUBPROJECTS
环境变量来启用并行构建。该工程师将其设置为 YES
,以便在构建过程中同时处理多个子项目。
缓存优化
构建过程中,构建机经常需要下载和安装各种依赖项。为了避免重复下载,该工程师使用了缓存机制。他将构建机配置为使用本地缓存存储已下载的依赖项,从而减少了构建过程中的网络开销。
此外,他还使用了 CocoaPods 的 --cache-dir
选项,将 Cocoapods 缓存目录移动到构建机上的固态硬盘 (SSD) 上。SSD 的读写速度远高于传统硬盘,这进一步加快了依赖项的安装过程。
持续集成集成
为了实现出包过程的自动化,该工程师将构建机与持续集成 (CI) 系统集成。CI 系统可以在代码更改时自动触发构建,并自动将构建结果分发到测试环境。
他使用了 Jenkins 作为 CI 系统,并在构建机上设置了 Jenkins 代理。当代码更改被推送到代码仓库时,Jenkins 会触发构建任务,构建机就会自动出包并将其上传到蒲公英等 App 分发平台。
成果
通过上述优化,该工程师将测试包出包时间从 25 分钟缩短到 20 秒以内。这极大地提高了测试效率,使团队能够更频繁地进行测试,从而提高了软件质量。
此外,出包过程的自动化也简化了 DevOps 流程,使团队能够更专注于开发和业务逻辑,而不是构建和分发任务。
总结
通过优化构建机配置、采用并行构建、缓存优化和持续集成集成,可以极大地提高 iOS 测试包出包速度。这有助于提高测试效率,自动化 DevOps 流程,并提高 App 分发的敏捷性。