CI/CD pour Windows on Arm : GitHub Actions windows-11-arm et alternatives
Mis à jour le 5 juin 2026
À partir de 2026, vous pouvez compiler et tester Windows on Arm en CI sans posséder de matériel Arm. GitHub propose un runner Arm64 Windows hébergé, et pour les cas qu’il ne couvre pas, il existe des solutions de repli propres.
L’état de l’Arm CI en 2026
Le runner hébergé windows-11-arm de GitHub — une image Windows 11 de bureau Arm64 avec outils préinstallés, 4 vCPU standard — est devenu généralement disponible pour les dépôts publics le 7 août 2025, gratuit pour les dépôts publics. Cela fait de la compilation et des tests natifs Arm64 une cible CI de première classe, et non un projet secondaire auto-hébergé.
L’écueil qui vous surprendra
windows-11-arm ne fonctionne que dans les dépôts publics. Dans un dépôt privé, le job échoue immédiatement. Pour les projets privés, vous avez besoin de runners Arm plus grands/payants ou d’un agent Arm auto-hébergé. Vérifiez cela avant de l’intégrer dans un pipeline privé.
Un workflow minimal fonctionnel
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
L’avantage ici est que la compilation et les tests s’exécutent sur du véritable Arm64 — votre suite de tests exerce les chemins de code natifs, et non ceux émulés.
Cross-compilation vs natif : choisir par étape
- Cross-compilation sur x64 (
windows-latest+/p:Platform=ARM64) est plus rapide et moins cher, mais vous ne pouvez pas exécuter les binaires Arm64 résultants sur le runner x64 — pas d’exécution de tests natifs. - Natif sur
windows-11-armcompile et exécute les tests sur la cible.
La matrice pragmatique : cross-compiler la compilation sur x64 pour la vitesse, puis un job séparé windows-11-arm qui compile et exécute la suite de tests. Pour le code de pilote ou anti-triche, les tests sur cible ne sont pas optionnels — l’émulation ne peut pas exercer les composants du noyau (pourquoi).
Dépôts privés et autres plateformes
Pour les dépôts privés : les runners Arm plus grands de GitHub (payants), ou un agent Arm auto-hébergé sur un ordinateur portable Snapdragon X commercial ou une VM Windows Arm dans le cloud. Azure DevOps peut utiliser des VM basées sur Arm (Ampere/Cobalt) comme agents auto-hébergés.
Boucler la boucle
Une fois que votre pipeline publie la compilation Arm64 vers winget, le Microsoft Store ou GitHub Releases, les trackers de compatibilité la détectent — le nôtre re-scanne les métadonnées de winget et des releases GitHub et bascule automatiquement votre entrée en natif. Associez ce guide au guide de portage (quoi compiler) et suivez la tendance de part natif à laquelle vous contribuez.