Skip to content
OnARM.Net

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-arm compila 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.

← Todas las guías