適用於 Windows on Arm 的 CI/CD:GitHub Actions windows-11-arm 及替代方案
更新於 2026年6月5日
截至 2026 年,您無需擁有 Arm 硬體即可在 CI 中建置與測試 Windows on Arm。GitHub 提供了一個託管的 Arm64 Windows 執行器,而對於它未涵蓋的情況,也有簡潔的替代方案。
2026 年 Arm CI 的現狀
GitHub 的 windows-11-arm 託管執行器 — 一個 Windows 11 桌面 Arm64 映像檔,內建工具,標準 4 虛擬 CPU — 已於 2025 年 8 月 7 日對公開儲存庫正式推出,公開儲存庫免費使用。這使得原生 Arm64 的建置與測試成為第一流的 CI 目標,而非自行託管的次要專案。
可能讓你喫虧的陷阱
windows-11-arm 僅適用於公開儲存庫。 在私有儲存庫中,工作會直接失敗。對於私有專案,您需要更大/付費的 Arm 執行器或自行託管的 Arm 代理程式。在將其整合到私有管線之前,請先確認這點。
一個最小可運作的工作流程
name: build-arm64
on: [push, pull_request]
jobs:
arm64:
runs-on: windows-11-arm # public repos only
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 上執行 — 您的測試套件會執行原生的程式碼路徑,而非模擬的路徑。
交叉編譯與原生:依階段選擇
- 在 x64 上交叉編譯(
windows-latest+/p:Platform=ARM64)速度更快、成本更低,但您無法在 x64 執行器上執行產生的 Arm64 二進位檔 — 無法進行原生測試執行。 - 在
windows-11-arm上原生建置並在目標上執行測試。
實用的組合:在 x64 上交叉編譯以加快速度,然後另外一個 windows-11-arm 工作來建置並執行測試套件。對於驅動程式或反作弊程式碼,在目標上測試是必要的 — 模擬無法執行核心元件(原因)。
私有儲存庫與其他平臺
對於私有儲存庫:使用 GitHub 較大的 Arm 執行器(付費),或在零售 Snapdragon X 筆電或雲端 Arm Windows VM 上使用自行託管的 Arm 代理程式。Azure DevOps 可以使用基於 Arm 的 VM(Ampere/Cobalt)作為自行託管的代理程式。
閉環
一旦您的管線將 Arm64 建置發佈到 winget、Microsoft Store 或 GitHub Releases,相容性追蹤器就會偵測到它 — 我們的工具會重新掃描 winget 和 GitHub 發行版本元數據,並自動將您的項目標記為原生。將本指南與移植路線圖(要建置什麼)配對,並觀看您正在貢獻的原生佔比趨勢。