O Que É um Exit Code? Como Comandos Reportam Sucesso
Um exit code é um inteiro pequeno que um programa retorna quando termina, onde 0 significa sucesso e qualquer valor diferente de zero significa algum tipo de falha.
Quando um comando termina, ele devolve um número que informa ao shell se funcionou. Zero significa sucesso; qualquer outra coisa significa falha. Esse único número é o que o CI usa para decidir se um passo passou ou falhou, o que torna os exit codes o batimento cardíaco de todo pipeline.
O que é um exit code
É o status que um processo retorna ao sair, um inteiro de 0 a 255. O shell armazena o exit code mais recente na variável especial $?, que você pode inspecionar logo após um comando rodar.
Zero versus diferente de zero
Por convenção, 0 significa que o comando teve sucesso. Qualquer valor diferente de zero sinaliza uma falha, e números diferentes podem indicar problemas diferentes, como um arquivo ausente ou argumentos inválidos.
Alguns codes comuns
- 0: sucesso.
- 1: um erro geral, do tipo pega-tudo.
- 127: comando não encontrado.
- 130: terminado por Ctrl-C (interrupção por signal).
Exit codes e fluxo de controle
O shell usa exit codes para lógica. cmd && next roda next apenas se cmd teve sucesso; cmd || fallback roda fallback apenas se cmd falhou. É assim que scripts ramificam com base no sucesso.
Exit codes no CI
Um passo de CI passa se seu exit code final for 0 e falha caso contrário. Com set -e, o script aborta na primeira saída diferente de zero, então um comando com falha faz o job falhar imediatamente em vez de ser ignorado.
Passar e falhar em runners gerenciados
Os runners da Latchkey reportam um job como falho quando um passo sai com código diferente de zero. Como falhas genuínas aparecem como exit codes, problemas transitórios de infraestrutura podem ser distinguidos e repetidos enquanto falhas reais de teste ou build interrompem a execução.
Principais conclusões
- Um exit code é o número que um programa retorna; 0 é sucesso, diferente de zero é falha.
- O shell armazena o último exit code em
$?e ramifica com base nele usando && e ||. - O CI decide passar ou falhar a partir do exit code de um passo, especialmente sob
set -e.