Validar alterações com GitHub Actions
Com o desenvolvimento baseado em trunks implementado, cada alteração proposta passa por um pull request. Esse pull request é também o momento natural para fazer verificações automáticas. Uma alteração que comprometa o script de treino não deve chegar a main, e um revisor não deve ter de detetar manualmente todos os erros de código.
Fluxos de trabalho, gatilhos e a porta de qualidade
Um fluxo de trabalho GitHub Actions é um ficheiro YAML armazenado no seu repositório sob .github/workflows/. Define o que executar, quando executar e em que sequência. Um acionador (a tecla on:) diz ao GitHub quando o deve iniciar.
Para o fluxo de trabalho de validação do Proseware, o acionador pull_request adequa-se à tarefa. Por defeito, é executado quando um pedido de pull é aberto, reaberto ou recebe novos commits. O seu resultado aparece como uma verificação de estado no pull request.
Empregos, corredores e degraus
Um fluxo de trabalho organiza o trabalho em tarefas. Cada job corre num runner — uma máquina virtual fornecida pelo GitHub ou uma que a sua organização gere. Um trabalho contém passos ordenados que verificam o repositório, instalam ferramentas e executam comandos.
Para o código de treino da Proseware, uma tarefa de validação pode:
- Consulta o repositório.
- Instala um linter (como o Flake8 para Python) e executa-o contra os scripts de treino.
- Execute testes unitários (como o Pytest) para verificar se as funções do script se comportam corretamente.
Estes passos são executados automaticamente em cada pull request. Ninguém tem de se lembrar de os gerir localmente.
Verificações necessárias
Fazer verificações automaticamente é apenas metade da proteção. A outra metade é tornar essas verificações bloqueantes. Nas definições de proteção de ramos, a opção Exigir verificações de estado para passar antes da fusão permite nomear empregos específicos. Um pull request não pode ser intercalado até que essas tarefas indicadas sejam concluídas com êxito.
Em conjunto, o desenvolvimento baseado em troncos e as verificações de estado obrigatórias formam uma porta de qualidade: o cientista de dados abre um pull request, o fluxo de trabalho é executado e o botão de fusão mantém-se desativado até o código passar.
Sugestão
A verificação de estado é identificada pelo nome do trabalho no ficheiro de workflow. Utilize um nome claro e estável para que seja fácil de encontrar nas definições de proteção de ramificações.
Sugestão
Pense numa alteração de pré-processamento com sintaxe Python válida mas saída incorreta. Qual verificação pode detetar problemas de estilo, e qual verificação deve verificar o comportamento?