Skip to content
Latchkey

Exit code 127 explicado: comando não encontrado no CI

O exit code 127 é o shell dizendo "não consegui encontrar esse comando" - o executável não está instalado, não está no PATH ou está escrito errado.

Quando um step de CI termina com 127, o comando nunca chegou a rodar. O shell o procurou, não conseguiu localizá-lo e desistiu antes que qualquer lógica do próprio programa executasse.

O que 127 significa

O shell retorna 127 quando não consegue resolver o nome de um comando para um executável. É diferente de "o comando rodou e falhou" - nada rodou. Você normalmente verá uma mensagem command not found junto com ele.

Causas comuns no CI

  • Uma ferramenta instalada localmente mas não na imagem do runner.
  • Uma ferramenta instalada em um diretório que não está no PATH.
  • Um erro de digitação no nome do comando ou um nome de binário errado.
  • Um step de setup anterior falhou silenciosamente, então a ferramenta nunca foi instalada.

Como corrigir

Confirme que a ferramenta está instalada no job (adicione um step de instalação explícito) e confirme que está no PATH (which <tool> ou command -v <tool>). Em runners efêmeros, nada persiste entre jobs, então toda ferramenta que um step precisa deve ser instalada dentro desse job ou embutida na imagem do runner.

Guarded install
- run: command -v jq || sudo apt-get install -y jq
- run: jq --version

127 vs 126

Não os confunda: 127 significa que o comando não foi encontrado, enquanto 126 significa que foi encontrado mas não é executável (permissões erradas ou uma linha de interpretador quebrada). Correções diferentes - instalar/PATH para 127, chmod/shebang para 126.

Principais conclusões

  • Exit 127 = comando não encontrado; nada de fato rodou.
  • Causas: ferramenta não instalada, fora do PATH ou escrita errada.
  • Em runners efêmeros, instale toda ferramenta necessária dentro do job ou embuta na imagem.
  • 127 (não encontrado) é diferente de 126 (encontrado, mas não executável).

Guias relacionados