Skip to content
OnARM.Net

Windows on Arm 的 CI/CD:GitHub Actions windows-11-arm 与替代方案

更新于 2026年6月5日

到 2026 年,你不必拥有 Arm 硬件就能在 CI 里构建和测试 Windows on Arm。GitHub 提供了托管的 Arm64 Windows runner,它覆盖不到的场景也有干净的退路。

2026 年 Arm CI 现状

GitHub 的 windows-11-arm 托管 runner——预装工具链、4 vCPU 标准配置的 Windows 11 桌面 Arm64 镜像——已于 2025 年 8 月 7 日对公开仓库正式可用,公开仓库免费。这让 Arm64 原生构建与测试成为一等 CI 目标,而非自托管的副业。

会咬你一口的坑

windows-11-arm 只在公开仓库可用。 在私有仓库里这个任务会直接失败。私有项目需要更大的付费 Arm runner 或自托管 Arm agent。接进私有管线之前先确认这点。

一份最小可用 workflow

name: build-arm64
on: [push, pull_request]
jobs:
  arm64:
    runs-on: windows-11-arm   # 仅公开仓库
    steps:
      - uses: actions/checkout@v4
      - uses: microsoft/setup-msbuild@v2
      - name: Build ARM64
        run: msbuild MyApp.sln /p:Platform=ARM64 /p:Configuration=Release
      - name: Test on-target
        run: ctest --output-on-failure

这里的关键收益是构建测试都跑在真实 Arm64 上——你的测试套件检验的是原生代码路径,不是模拟的。

交叉编译 vs 原生:按阶段选择

  • x64 上交叉编译windows-latest + /p:Platform=ARM64)更快更省,但生成的 Arm64 二进制无法在 x64 runner 上运行——没有原生测试执行。
  • windows-11-arm 上原生——构建在目标机上跑测试。

务实的矩阵:x64 上交叉编译以求速度,再加一个独立的 windows-11-arm 任务来构建并跑测试套件。对驱动或反作弊代码,目标机测试不是可选项——模拟无法检验内核组件(原因)。

私有仓库与其他平台

私有仓库:GitHub 更大的付费 Arm runner,或在零售骁龙 X 笔记本/云端 Arm Windows 虚拟机上自托管 Arm agent。Azure DevOps 可用 Arm 架构虚拟机(Ampere/Cobalt)作自托管 agent。

闭环

管线一旦把 Arm64 构建发布到 winget、微软商店或 GitHub Releases,兼容性追踪器就会检测到——我们会重新扫描 winget 和 GitHub release 元数据,自动把你的条目翻成原生。把这篇与移植路线图(构建什么)搭配阅读,并关注你正在贡献的原生占比趋势

← 全部指南