如何配置GitHub托管Apple Silicon Runner的Workflow YAML文件?
问题:如何使用GitHub托管的Apple Silicon runner构建开源项目的ARM Wheels?
我维护一个包含Cython组件、需要构建wheels的开源Python项目,托管在GitHub并使用其CI/CD系统。目前只能构建x86 Mac wheels,因为之前GitHub只提供这类托管runner。虽然可以用自托管Apple Silicon runner,但现在还是手动构建Mac ARM wheels。GitHub相关的跟踪议题已经关闭,指向介绍大尺寸runner的博客,但这类runner不仅用不了还得付费。我试了好几种Workflow配置都没法触发GitHub托管的Apple Silicon runner,相关议题和博客还没法评论。现在想问:
- 怎么用GitHub托管的Apple Silicon runner?
- 这个功能对开源项目免费吗?
尝试过的无效配置示例
配置1:指定universal2架构
- os: macos-latest python-version: 3.8 cibw-build: cp38-macosx_universal2 - os: macos-latest python-version: 3.9 cibw-build: cp39-macosx_universal2 - os: macos-latest python-version: '3.10' cibw-build: cp310-macosx_universal2 - os: macos-latest python-version: 3.11 cibw-build: cp311-macosx_universal2
配置2:尝试macos-latest-arm64标签
- os: macos-latest-arm64 python-version: 3.8 cibw-build: cp38-macosx_arm64 - os: macos-latest-arm64 python-version: 3.9 cibw-build: cp39-macosx_arm64 - os: macos-latest-arm64 python-version: '3.10' cibw-build: cp310-macosx_arm64 - os: macos-latest-arm64 python-version: 3.11 cibw-build: cp311-macosx_arm64
配置3:指定macos-13系统
- os: macos-13 python-version: 3.8 cibw-build: cp38-macosx_arm64 - os: macos-13 python-version: 3.9 cibw-build: cp39-macosx_arm64 - os: macos-13 python-version: '3.10' cibw-build: cp310-macosx_arm64 - os: macos-13 python-version: 3.11 cibw-build: cp311-macosx_arm64
配置4:尝试大尺寸runner标签
- os: ubuntu-latest python-version: 3.11 cibw-build: cp311-manylinux_x86_64 - os: macos-latest-xlarge python-version: 3.8 cibw-build: cp38-macosx_arm64 - os: macos-latest-xlarge python-version: 3.9 cibw-build: cp39-macosx_arm64 - os: macos-latest-xlarge python-version: '3.10' cibw-build: cp310-macosx_arm64 - os: macos-latest-xlarge python-version: 3.11 cibw-build: cp311-macosx_arm64 - os: macos-latest
解答
1. GitHub托管Apple Silicon runner的使用限制
GitHub目前的托管Apple Silicon(arm64)runner仅面向GitHub Team或Enterprise付费计划开放,属于大尺寸runner(Large/XLarge)范畴,开源项目无法免费使用这类托管资源。公开仓库的免费CI/CD资源仅支持x86架构的macOS runner(macos-latest对应x86的macOS 13/14)。
你之前的配置无效的原因:
macos-latest-arm64:GitHub从未提供过该官方标签,属于无效配置macos-13:默认仍指向x86架构runner,不会触发ARM设备macos-latest-xlarge:这类大尺寸runner需要付费订阅权限,开源项目无访问资格
2. 开源项目构建ARM Wheels的可行方案
方案1:使用自托管Apple Silicon runner
这是目前开源项目免费构建ARM wheels的唯一官方途径,配置步骤:
- 进入项目仓库「Settings → Actions → Runners」,点击「New self-hosted runner」
- 选择「macOS」→「ARM64」,按照页面提示的命令在你的Apple Silicon设备上完成runner注册
- 在Workflow中指定
runs-on: self-hosted,配合CIBW配置构建arm64 wheels
方案2:交叉编译universal2 wheels
在x86的macOS runner上通过交叉编译生成同时支持x86和arm64的universal2 wheels,无需ARM硬件。调整后的CIBW配置示例:
jobs: build_wheels: runs-on: macos-latest steps: - uses: actions/checkout@v4 - uses: pypa/cibuildwheel@v2.16.5 env: CIBW_BUILD: "cp38-* cp39-* cp310-* cp311-*" CIBW_PLATFORM: macos CIBW_ARCHS_MACOS: universal2 # 针对Cython组件配置交叉编译环境 CIBW_ENVIRONMENT_MACOS: | ARCHFLAGS="-arch x86_64 -arch arm64"
方案3:第三方CI平台支持
部分第三方CI平台(如GitLab CI)提供免费的ARM runner资源,可迁移CI配置到这些平台完成构建。
内容的提问来源于stack exchange,提问作者Brian
相关产品推荐
相关产品推荐

