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 vCPU — は 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 上で実行されることです — テストスイートはエミュレートされたものではなく、ネイティブのコードパスを実行します。
クロスコンパイル vs ネイティブ: 段階ごとに選択
- x64 上でのクロスコンパイル (
windows-latest+/p:Platform=ARM64) は高速でコストも安いですが、生成された Arm64 バイナリを x64 ランナーで実行することはできません — ネイティブのテスト実行はできません。 windows-11-arm上のネイティブは、ターゲット上でビルド および テストを実行します。
実用的なマトリックス: 速度のために x64 上でクロスコンパイルし、その後、別の windows-11-arm ジョブでテストスイートをビルドして実行します。ドライバーやアンチチートコードの場合、ターゲット上でのテストは必須です — エミュレーションではカーネルコンポーネントを実行できません (理由)。
プライベートリポジトリとその他のプラットフォーム
プライベートリポジトリの場合: GitHub のより大規模な Arm ランナー (有料)、または市販の Snapdragon X ノート PC やクラウド上の Arm Windows VM 上でセルフホストの Arm エージェントを使用します。Azure DevOps は Arm ベースの VM (Ampere/Cobalt) をセルフホストエージェントとして使用できます。
ループを閉じる
パイプラインが Arm64 ビルドを winget、Microsoft Store、または GitHub Releases に公開すると、互換性トラッカーがそれを検出します — 当社のトラッカーは winget と GitHub リリースのメタデータを再スキャンし、エントリを自動的にネイティブに切り替えます。このガイドを 移植ロードマップ (何をビルドするか) と組み合わせて、あなたが貢献している ネイティブシェアのトレンド をご覧ください。