GitHub iOS团队如何利用Apple Silicon Actions Runners减少测试时间

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 分钟完成。

  1. 拆分测试套件
    团队将测试套件拆分为多个独立的任务,利用应用程序包含的约 60 个第一方模块,这些模块大多可以独立构建和测试。这一变化显著缩短了 PR 的周转时间,部分模块在 Apple Silicon 上仅需 2-3 分钟即可构建和测试,为开发者提供即时反馈。
  2. 分离构建与测试步骤
    团队使用 xcodebuild 的 build-without-testingtest-without-building 功能,将构建步骤与测试步骤分离。这使得团队能够识别运行时间较长的单元测试,并进一步优化它们。

成果

通过从单一工作流程转变为基于模块的构建和测试工作流程,团队将构建时间从 38 分钟缩短至 15 分钟。

Apple Silicon runners 的局限性

尽管 Apple Silicon runners 目前在测试阶段,但仍有一些已知的局限性:

  • 并非所有社区提供的操作都与 arm64 架构兼容。
  • 由于 Apple Virtualization Framework 的限制,一些高级功能(如嵌套虚拟化和 Metal 性能着色器)不可用。

GitHub Actions 的并发与硬件支持

GitHub Actions 为企业和团队账户提供最多 50 个并发 runners,免费账户则为 5 个。公共仓库可以使用 M1 处理器,而更强大的硬件则需要额外付费。

阅读 38
0 条评论