Ir para o conteúdo

Hooks e Actions

Ao desenvolver uma aplicação, é comum utilizar diferentes tecnologias para assegurar uma boa condição do código e seu funcionamento. Para isso, podemos utilizar ferramentas de verificação e integração quando ocorrem certas ações importantes no versionamento do código.

Git Hooks

Abaixo esta o script do Git Hook do lado do cliente usado nesta aplicação, é chamado de pre-commit porque é o primeiro que será executado automaticamente localmente quando ocorrer um commit, e irá executar determinadas ações de checagem dependendo dos arquivos que foram alterados e que estão sendo comitados.

  • Executa o Lint quando arquivos da pasta app forem comitados.
  • Executa o Lint quando arquivos da pasta tests forem comitados.
  • Executa a Auditoria de Vulnerabilidade quando arquivos da pasta requirements forem comitados, o que significa que novas bibliotecas, pacotes ou dependências foram instalados.
  • Executa os Testes de qualquer forma, garantindo que tudo esteja funcionando.
pre-commit
#!/bin/bash

make format

if git diff --cached --name-only | grep -q '^app/'; then
  make lint
fi

if git diff --cached --name-only | grep -q '^tests/'; then
  make lint-tests
fi

if git diff --cached --name-only | grep -q '^requirements/'; then
  make audit
fi

make test

Tip

Não se esqueça de conceder as permissões necessárias para os arquivos de hook.

chmod +x .git/hooks/pre-commit

GitHub Actions

No lado do servidor, esta aplicação usa o GitHub Actions para criar workflows que serão acionados automaticamente quando ocorrer um evento push no repositório remoto do GitHub, automatizando a execução automática dos trabalhos de verificação e implantação.

Trabalho de Verificação

Para Linting and Testes, ele verificará o repositório, configurará o Python, instalará o Poetry, carregará o venv em cache e instalará todas as dependências necessárias, como Pytest e Pylint, para realizar operações de lint e teste no código, garantindo que tudo esteja bem.

Trabalho de Documentação

Ele verificará o repositório, configurará o Python, carregará o venv em cache, e instalará as bibliotecas MkDocs e Material for MkDocs para configurar, fazer o deploy e publicar a página web estática da documentação da aplicação, escrita em Markdown, e que será hospedada no GitHub Pages no domínio github.io do GitHub.