Validar alterações com GitHub Actions

Concluído

Com o desenvolvimento baseado na trunk implementado, toda alteração proposta passa por um pull request. Essa solicitação de pull também é o momento natural para executar verificações automatizadas. Uma alteração que interrompe o script de treinamento não deve chegar a main, e um revisor não deve precisar identificar manualmente cada erro de código.

Fluxos de trabalho, gatilhos e o portão de qualidade

Um fluxo de trabalho do GitHub Actions é um arquivo YAML armazenado no seu repositório em .github/workflows/. Ele define o que executar, quando executá-lo e em qual sequência. Um gatilho (a tecla on:) indica ao GitHub quando iniciá-lo.

Para o fluxo de trabalho de validação do Proseware, o acionador pull_request é adequado para a tarefa. Por padrão, ele é executado quando uma solicitação de pull é aberta, reabre ou recebe novas confirmações. Seu resultado aparece como uma verificação de status na solicitação de pull.

Trabalhos, corredores e etapas

Um fluxo de trabalho organiza o trabalho em trabalhos. Cada trabalho é executado em um executor — uma máquina virtual fornecida por GitHub ou uma que sua organização gerencia. Um trabalho contém etapas ordenadas que verificam o repositório, instalam ferramentas e executam comandos.

Para o código de treinamento do Proseware, um trabalho de validação pode:

  1. Confira o repositório.
  2. Instale um linter (como Flake8 para Python) e execute-o nos scripts de treinamento.
  3. Execute testes de unidade (como Pytest) para verificar se as funções de script se comportam corretamente.

Essas etapas são executadas automaticamente em cada solicitação de pull. Ninguém precisa se lembrar de executá-los localmente.

Fazer verificações necessárias

Executar verificações automaticamente é apenas metade da proteção. A outra metade está fazendo essas verificações bloqueando. Nas configurações de proteção de ramificação, a opção Exigir verificações de status para passar antes da mesclagem permite nomear trabalhos específicos. Um pull request não pode ser mesclado até que os jobs especificados sejam concluídos com êxito.

Juntos, o desenvolvimento baseado em tronco e as verificações de status necessárias formam uma porta de qualidade: o cientista de dados abre uma solicitação de pull, o fluxo de trabalho é executado e o botão de mesclagem permanece desabilitado até que o código seja aprovado.

Dica

A verificação de status é identificada pelo nome do trabalho no arquivo de fluxo de trabalho. Use um nome claro e estável para que seja fácil localizar nas configurações de proteção de branch.

Dica

Pense em uma alteração de pré-processamento com sintaxe de Python válida, mas saída incorreta. Qual verificação pode detectar problemas de estilo e qual verificação deve verificar o comportamento?