GitHub iOS 团队采用 Apple Silicon macOS runners 优化构建与测试流程
GitHub iOS 团队通过采用 Apple Silicon 驱动的 macOS runners,显著减少了使用 GitHub Actions 构建和测试应用程序所需的时间。在此过程中,他们还重构了应用程序,以更好地利用 GitHub Actions 的并行化能力。
Apple Silicon runners 的优势
GitHub 工程师 Stephen Glass 和 Eli Perkins 指出,Apple Silicon 带来了以下优势:
- 提升构建性能,增加可靠性。
- 使 iOS 团队能够在整个软件开发生命周期中为所有 Apple 平台进行原生测试。
- 避免了跨编译或模拟器带来的问题,并能够在 GitHub Actions runner 镜像上使用最新的模拟器。
此外,使用 Apple Silicon runners 有助于确保代码与最新版本的 iOS、iPadOS、watchOS 和 tvOS 兼容。
工作流程优化
在迁移到 Apple Silicon runners 的过程中,GitHub 团队还进行了其他优化。最初,他们使用单一的构建-测试工作流程,在基于 Intel 的 runners 上需要 38 分钟完成。
- 拆分测试套件
团队将测试套件拆分为多个独立的任务,利用应用程序包含的约 60 个第一方模块,这些模块大多可以独立构建和测试。这一变化显著缩短了 PR 的周转时间,部分模块在 Apple Silicon 上仅需 2-3 分钟即可构建和测试,为开发者提供即时反馈。 - 分离构建与测试步骤
团队使用 xcodebuild 的build-without-testing和test-without-building功能,将构建步骤与测试步骤分离。这使得团队能够识别运行时间较长的单元测试,并进一步优化它们。
成果
通过从单一工作流程转变为基于模块的构建和测试工作流程,团队将构建时间从 38 分钟缩短至 15 分钟。
Apple Silicon runners 的局限性
尽管 Apple Silicon runners 目前在测试阶段,但仍有一些已知的局限性:
- 并非所有社区提供的操作都与 arm64 架构兼容。
- 由于 Apple Virtualization Framework 的限制,一些高级功能(如嵌套虚拟化和 Metal 性能着色器)不可用。
GitHub Actions 的并发与硬件支持
GitHub Actions 为企业和团队账户提供最多 50 个并发 runners,免费账户则为 5 个。公共仓库可以使用 M1 处理器,而更强大的硬件则需要额外付费。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。