CI/CD para Windows on Arm: GitHub Actions windows-11-arm e Alternativas
Atualizado em 5 de jun. de 2026
A partir de 2026, você pode compilar e testar o Windows on Arm em CI sem possuir hardware Arm. O GitHub oferece um runner Windows Arm64 hospedado e, para os casos que ele não cobre, existem alternativas limpas.
O estado do Arm CI em 2026
O runner hospedado windows-11-arm do GitHub — uma imagem Windows 11 desktop Arm64 com ferramentas pré-instaladas, 4 vCPU padrão — tornou-se disponível de forma geral para repositórios públicos em 7 de agosto de 2025, gratuito para repositórios públicos. Isso torna a compilação e teste nativos em Arm64 um destino CI de primeira classe, não um projeto secundário auto-hospedado.
A armadilha que vai te pegar
windows-11-arm funciona apenas em repositórios públicos. Em um repositório privado, o trabalho falha completamente. Para projetos privados, você precisa de runners Arm maiores/pagos ou um agente Arm auto-hospedado. Verifique isso antes de integrá-lo em um pipeline privado.
Um fluxo de trabalho mínimo funcional
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
A vantagem aqui é que a compilação e o teste são executados em Arm64 real — seu conjunto de testes exercita caminhos de código nativos, não emulados.
Cross-compile vs nativo: escolha por etapa
- Cross-compile no x64 (
windows-latest+/p:Platform=ARM64) é mais rápido e barato, mas você não pode executar os binários Arm64 resultantes no runner x64 — sem execução de teste nativa. - Nativo no
windows-11-armcompila e executa testes no alvo.
A matriz pragmática: cross-compile a compilação no x64 para velocidade, depois um trabalho separado windows-11-arm que compila e executa a suíte de testes. Para código de driver ou anti-cheat, o teste no alvo não é opcional — a emulação não pode exercitar componentes do kernel (por que).
Repositórios privados e outras plataformas
Para repositórios privados: runners Arm maiores do GitHub (pagos), ou um agente Arm auto-hospedado em um laptop Snapdragon X de varejo ou uma VM Windows Arm na nuvem. O Azure DevOps pode usar VMs baseadas em Arm (Ampere/Cobalt) como agentes auto-hospedados.
Fechando o ciclo
Assim que seu pipeline publicar a compilação Arm64 no winget, na Microsoft Store ou no GitHub Releases, os rastreadores de compatibilidade a detectam — o nosso reescaneia o winget e os metadados de release do GitHub e altera sua entrada para nativo automaticamente. Combine este guia com o roteiro de portabilidade (o que compilar) e observe a tendência de participação nativa para a qual você está contribuindo.