Rodar a esteira localmente
Como reproduzir uma reprovação de esteira na própria máquina, sem gastar um ciclo de push por tentativa.
Investigar uma reprovação pelo log do runner custa um push, uma fila e três
minutos por tentativa. O template da casa existe para que isso não seja
necessário: todo passo de verificação é uma linha do Makefile, e o workflow
chama o Makefile em vez de repetir o comando.
Antes de começar
O ambiente virtual do projeto ativo, e as dependências de desenvolvimento instaladas. Ver Preparar a máquina local.
Os passos
Achar o alvo que falhou
O nome do passo no log é o nome do alvo.
Verificar tiposémake tipos.make -n verificar # lista os alvos que a esteira roda, em ordemRodar só ele
Rodar
make verificarinteiro repete o que já passou e esconde a falha no meio da saída.make tiposRodar tudo antes de empurrar
Só depois de o alvo isolado passar. A ordem importa: alguns alvos escrevem artefato que os seguintes leem.
make verificar
Verificação
A saída local e a do runner precisam ser a mesma. Quando não são, a diferença é
quase sempre de versão de intérprete ou de variável de ambiente ausente, e o
alvo make ambiente imprime as duas para comparação:
make ambiente
# python 3.12.7 · panlabs-cli 3.2.1 · PANLABS_INDICE definido
Se make ambiente local e o do runner concordam e o resultado ainda diverge, a
diferença é de estado: cache, arquivo não versionado, ou banco local com
dados de uma execução anterior. git clean -ndx lista o que existe na sua
máquina e não existe na do runner.
Variações
O passo depende de credencial da nuvem. Assuma o papel de dev antes; o
runner assume o dele por identidade federada, e localmente o equivalente é
panlabs ambiente usar dev.
O passo roda em container. O Makefile traz o alvo com sufixo -container,
que monta o diretório e roda o mesmo comando com a imagem que a esteira usa.
Não copie o comando do arquivo de workflow para o terminal. Ele frequentemente depende de variável que o Actions injeta, e o que você reproduz passa a ser um comando parecido em vez do mesmo, que é a forma mais cara de investigar.