Caiu ou Não?Pesquisar serviço
PT
GitHub e desenvolvimento

GitHub Actions vai remover macOS 14: como migrar sem quebrar o CI

Jobs com macos-14 terão falhas programadas em outubro e deixarão de funcionar em novembro. Migre o label e valide arquitetura e ferramentas agora.

Computador exibindo a migração de um workflow do GitHub Actions do runner macOS 14 para macOS 15 e 26

Resposta rápida

O GitHub vai retirar em 2 de novembro de 2026 os labels macos-14, macos-14-large e macos-14-xlarge dos runners hospedados do GitHub Actions. Antes da remoção, jobs que ainda usam esses labels falharão temporariamente em oito brownouts programados para outubro. Procure as referências em .github/workflows e em workflows reutilizáveis, escolha uma imagem macOS 15 ou macOS 26 compatível com a arquitetura exigida e teste antes do primeiro brownout.

Não substitua o label às cegas. macos-14 e macos-14-xlarge são imagens arm64, enquanto macos-14-large é Intel x64. Preserve a arquitetura quando o build depende de binários, simuladores, plugins ou ferramentas sem suporte a arm64; depois confira a versão de Xcode e o software realmente instalado no runner usado pelo job.

Quando os jobs vão falhar

O GitHub programou períodos de brownout para 5, 12, 16, 19, 23, 26, 29 e 30 de outubro. Cada janela vai de 14h UTC até 0h UTC do dia seguinte, o que corresponde a 11h às 21h no horário de Brasília (UTC-3) na data inicial. Durante essas dez horas, um job ainda preso ao macOS 14 pode falhar de propósito para tornar a dependência visível.

Até a aposentadoria, a capacidade do macOS 14 também pode ser reduzida. Portanto, uma fila mais lenta não prova sozinha que o Actions caiu. Confirme o label do job, compare o horário com o brownout e consulte o GitHub Status antes de aumentar timeouts ou reexecutar o pipeline repetidamente.

  • 5 de outubro, das 11h às 21h de Brasília.
  • 12, 16, 19, 23, 26, 29 e 30 de outubro, sempre das 11h às 21h de Brasília.
  • 2 de novembro: retirada definitiva anunciada para os três labels macOS 14.

Como encontrar todos os usos de macOS 14

Pesquise o repositório inteiro, não apenas o workflow que falhou. O label pode estar diretamente em runs-on, dentro de strategy.matrix, em um workflow reutilizável chamado por vários projetos ou em uma action composta que encaminha parâmetros. Organizações que mantêm templates centrais devem corrigir a fonte e também localizar cópias antigas já distribuídas.

Uma busca local com rg -n 'macos-14(-large|-xlarge)?' .github encontra as ocorrências diretas nos arquivos versionados. No GitHub, a pesquisa de código da organização ajuda a inventariar vários repositórios. Revise o resultado manualmente: documentação e exemplos não executam jobs, enquanto YAML gerado ou um repositório de templates pode afetar muitos pipelines.

  • Liste arquivos em .github/workflows que definem runs-on ou matrix.os.
  • Abra workflows reutilizáveis referenciados por uses: organização/repositório/.github/workflows/arquivo@ref.
  • Procure templates, scripts e geradores que ainda escrevem macos-14.
  • Registre responsável, label atual, arquitetura, versão de Xcode e criticidade de cada job.

Qual label usar no lugar

Para jobs arm64, o anúncio recomenda macos-15 ou macos-latest, que atualmente aponta para macOS 26. Em runners maiores arm64, use macos-15-xlarge ou macos-latest-xlarge, atualmente associado ao macOS 26 xlarge. Fixar macos-15 reduz a mudança imediata; escolher latest aceita migrações futuras anunciadas pelo GitHub e exige testes contínuos.

Para um job em macos-14-large, preserve Intel com macos-15-large ou outro label Intel disponível no repositório oficial de runner images. Trocar large por macos-15 ou latest muda de x64 para arm64. Essa alteração pode exigir dependências universais, atualização de caches, nova configuração do build e revisão de custos dos larger runners.

  • macos-14: teste macos-15; use macos-latest somente se o projeto aceita acompanhar a imagem estável mais nova.
  • macos-14-xlarge: teste macos-15-xlarge ou macos-latest-xlarge.
  • macos-14-large: teste macos-15-large para conservar a arquitetura Intel x64.
  • Consulte actions/runner-images no dia da migração, porque aliases e software instalado mudam ao longo do tempo.

Faça uma migração mínima e reversível

Crie uma branch dedicada e altere primeiro um job representativo. Se usa matriz, adicione temporariamente o novo label ao lado do antigo para comparar resultados, duração e artefatos. Não deixe a duplicação permanente sem revisar consumo, pois cada combinação da matriz cria outro job e pode aumentar a cobrança.

Fixe explicitamente as versões de ferramentas que o build precisa. A documentação do GitHub recomenda actions de setup porque elas tornam a versão menos dependente das atualizações semanais da imagem. No log do job, expanda Set up job e Runner Image para abrir a relação exata de software incluído naquela execução.

  • Troque apenas o label do runner em uma branch de teste.
  • Execute build, testes, assinatura, empacotamento e publicação sem usar credenciais de produção quando possível.
  • Compare arquitetura com uname -m, versão do sistema com sw_vers e Xcode com xcodebuild -version.
  • Valide o conteúdo e a assinatura dos artefatos, não apenas o status verde do job.
  • Promova o novo label e remova a combinação antiga antes da retirada definitiva.

O que costuma quebrar ao mudar a imagem

A falha mais comum é um binário x86_64 sem versão arm64. Também verifique gems nativas, Homebrew, CocoaPods, simuladores, plugins de Xcode, caches compilados para outra arquitetura e scripts que assumem caminhos específicos. Uma chave de cache que não inclui sistema, arquitetura e versão relevante pode restaurar artefatos incompatíveis no novo runner.

Outra diferença é a versão de Xcode. Mesmo dentro do mesmo macOS, a imagem é atualizada semanalmente e pode mudar SDKs e ferramentas. Se o aplicativo precisa de uma versão específica, selecione-a de forma explícita e valide a lista de software incluído. Não copie um caminho de Xcode de outra imagem sem conferir se ele existe na release atual.

Como diagnosticar uma falha no brownout

Abra o job e verifique o valor resolvido de runs-on. Em matrizes, o YAML pode mostrar uma variável enquanto o resumo do job revela o label efetivo. Se o job nem começa, compare a janela com o cronograma, confirme que o label foi alterado na ref executada e confira se o workflow reutilizável está fixado em uma tag ou SHA antigo.

Se o job começa e falha em uma etapa, o problema já não é falta do runner: investigue arquitetura, Xcode, dependências e cache. Use os logs do workflow e ative debug somente quando necessário. Não imprima secrets ou credenciais para provar que uma variável existe; o log pode virar uma nova exposição de segurança.

Limitações e próxima ação útil

Este guia foi verificado em 2 de outubro de 2026. O cronograma se refere aos runners hospedados do GitHub Actions em github.com; runners próprios e GitHub Enterprise Server seguem a imagem e o ciclo administrados pela organização. O GitHub Status mostra disponibilidade geral, mas não confirma que um binário, SDK ou action de terceiros seja compatível com a nova arquitetura.

Faça hoje o inventário com uma busca por macos-14, migre um job de baixo risco para o label escolhido e valide o artefato completo. O primeiro brownout começa em 5 de outubro, então esperar uma falha real deixa pouco tempo para corrigir dependências, assinatura e caches antes das próximas janelas.

Faça o próximo teste

Fontes consultadas

Os links abaixo servem para conferir conceitos, orientações oficiais e o critério editorial usado neste conteúdo.

Outros guias ligados ao mesmo tipo de problema.