GitHub Actions
O pipeline na ordem que economiza tempo — e o erro de análise anotado na linha do PR.
dataforge devops ci github escreve .github/workflows/ci.yml: formato, análise estática, lint e testes, numa matriz de Python, com um push novo cancelando o anterior. A ordem é a do custo: o check acha nome errado e ciclo de import em menos de um segundo, e falhar ali poupa os minutos da suíte.
bash
dataforge devops ci github
git add .github/workflows/ci.yml && git commit -m "CI"O erro na linha do PR#
dataforge check --formato=github troca o desenho do terminal por anotações do Actions. Com elas o erro aparece na aba Files changed, na linha exata — e não só no log do job, que ninguém abre enquanto o resto do PR está verde.
text
$ dataforge check src/ --formato=github
::error file=src/pedido.df,line=14,col=5,title=arity::Action 'total' takes 1 argument(s) but 2 were given%0Asugestão: Chame como total(itens)
::warning file=src/pedido.df,line=30,col=9,title=escrita-concorrente::…| Decisão | Porque |
|---|---|
| o nível segue a gravidade | erro vira ::error, aviso vira ::warning — o PR distingue os dois |
o title é o código do diagnóstico | arity, undefined-name: é o que se procura e o que se silencia com // df: permitir |
| a sugestão vai junto | a correção aparece na mesma caixa que o erro |
| a mensagem é escapada | um % ou uma quebra de linha cortaria a anotação no meio |
| o código de saída não muda | o job continua reprovando com erro, com ou sem anotação |
O que o workflow gerado já faz#
| No workflow | Sem ele |
|---|---|
concurrency com cancel-in-progress | dois commits num minuto rodam a suíte duas vezes inteiras |
matriz 3.10 e 3.13 | o que quebra na versão mínima só aparece com o primeiro usuário dela |
fail-fast: false | a primeira versão que falha cancela a outra, e não se sabe se é geral |
o job da imagem confere id -u | a imagem que roda como root chega ao registro |
Continue em Actions na linguagem.