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 ランナーを提供しており、それがカバーしないケースには明確な代替手段があります。

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 リリースのメタデータを再スキャンし、エントリを自動的にネイティブに切り替えます。このガイドを 移植ロードマップ (何をビルドするか) と組み合わせて、あなたが貢献している ネイティブシェアのトレンド をご覧ください。

← ガイド一覧