CI/CD para Windows en Arm: GitHub Actions windows-11-arm y alternativas
Actualizado 5 jun 2026
A partir de 2026, puedes compilar y probar Windows en Arm en CI sin poseer hardware Arm. GitHub ofrece un runner Arm64 Windows alojado, y para los casos que no cubre existen alternativas limpias.
El estado de Arm CI en 2026
El runner alojado windows-11-arm de GitHub — una imagen de Windows 11 de escritorio Arm64 con herramientas preinstaladas, 4 vCPU estándar — se lanzó en disponibilidad general para repositorios públicos el 7 de agosto de 2025, gratuito para repos públicos. Esto convierte la compilación y prueba nativas de Arm64 en un objetivo de CI de primera clase, no en un proyecto paralelo autoalojado.
El inconveniente que te morderá
windows-11-arm solo funciona en repositorios públicos. En un repositorio privado, el trabajo falla directamente. Para proyectos privados necesitas runners Arm más grandes/de pago o un agente Arm autoalojado. Verifica esto antes de integrarlo en un pipeline privado.
Un flujo de trabajo mínimo funcional
name: build-arm64
on: [push, pull_request]
jobs:
arm64:
runs-on: windows-11-arm # solo repos públicos
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
La ventaja aquí es que la compilación y la prueba se ejecutan en Arm64 real — tu suite de pruebas ejercita rutas de código nativas, no emuladas.
Compilación cruzada vs nativa: elige por etapa
- Compilación cruzada en x64 (
windows-latest+/p:Platform=ARM64) es más rápida y barata, pero no puedes ejecutar los binarios Arm64 resultantes en el runner x64 — no hay ejecución de pruebas nativa. - Nativa en
windows-11-armcompila y ejecuta pruebas en el destino.
La matriz pragmática: compilación cruzada en x64 para velocidad, luego un trabajo separado en windows-11-arm que compile y ejecute la suite de pruebas. Para código de controladores o antitrampas, las pruebas en el destino no son opcionales — la emulación no puede ejercitar componentes del kernel (por qué).
Repositorios privados y otras plataformas
Para repositorios privados: runners Arm más grandes de GitHub (de pago), o un agente Arm autoalojado en un portátil Snapdragon X comercial o una VM de Arm Windows en la nube. Azure DevOps puede usar VMs basadas en Arm (Ampere/Cobalt) como agentes autoalojados.
Cierra el ciclo
Una vez que tu pipeline publique la compilación Arm64 en winget, Microsoft Store o GitHub Releases, los rastreadores de compatibilidad la detectan — el nuestro reescanea winget y los metadatos de lanzamiento de GitHub y cambia tu entrada a nativa automáticamente. Combina esta guía con la hoja de ruta de portabilidad (qué compilar) y observa la tendencia de cuota nativa a la que estás contribuyendo.