GitHub Actions: Checks de pull requests de projetos NodeJS

Nicolas Cunha
Café & Tech
Published in
3 min readSep 16, 2020

A utilização de ferramentas de Continuous Integration/Continuous Delivery no cotidiano das empresas para verificações automatizadas de código-fonte é cada vez mais comum.

Em Novembro de 2019, o GitHub disponibilizou a ferramenta GitHub Actions, que nos permite a criação de workflows (sequências de comandos) que são executadas em diversos eventos do repositório.

Neste artigo, irei apresentar como efetuar a criação de um workflow de forma simples em um repositório que abriga uma aplicação NodeJS. Nosso workflow irá efetuar, em cada pull request, a checagem de erros de sintaxe e criação — build — da aplicação.

Nosso projeto tem como arquivo principal o index.js :

Para criarmos um workflow para aplicações Node, o próprio GitHub nos fornece um template.

Indo na aba Actions do repositório, encontramos o seguinte workflow:

Workflow das Actions para aplicações NodeJS
Exemplo de workflow

Clicando em Set up this workflow, somos apresentados pelo seguinte template:

Neste template, podemos identificar alguns dos pontos principais do workflow.

  • Name: identifica o nome do workflow
  • On: os eventos que o workflow é executado. No exemplo, o workflow é executado em “pushes” e “pull requests” para a branch [master].
  • Runs-on: sistema operacional que o workflow é utilizado.
  • node-version: versões do Node utilizadas no workflow.
  • steps: lógica principal do workflow. Inclui as dependências de outros workflows, como o checkout@v2, variáveis de ambiente. Os comandos efetivamente executadas no console são prefixados por “run”.

Clicando em Start Commit, criaremos um pull request para incluir o arquivo do workflow em nosso repositório. No commit, podemos identificar que alguns erros ocorreram:

Checks de NodeJS que falharam ou foram cancelados.

Indo em detalhes, identificamos que o check que apresentou falha são os testes, já que não possuimos nenhum. Podemos remover essa task do workflow, removendo a linha “npm test”. Vamos aproveitar para incluir a task que checa a síntaxe dos comandos no arquivo index.js.

Descrição de erro do workflow.

Nossos steps do workflow ficarão assim:

Após o commit, nossos checks estarão completos:

Checks que ocorreram com sucesso.

Para efetuar os testes de síntaxe, vamos escrever um erro de síntaxe proposital no arquivo index.js e efetuar o commit:

E o resultado será uma falha no check:

Para aplicarmos uma regra que certos checks devam ter sucesso, é possível configurar na aba Settings/Branches.

Configurações de regras de branches, GitHub

Com essa regra, ao efetuarmos o commit com problema, será criado um pull request, que não poderá ser “mergeado”, pois um ou mais checks obrigatórios falharam:

Pull request com checks com falha.

As configurações acima abordadas, tanto do GitHub Actions quanto de regras de branches, são apenas a ponta do iceberg, porém, são processos rápidos que evitam que códigos que não passam testes unitários ou que não respeitam a síntaxe de uma ou mais linguagens sejam integrados ao que já existe na aplicação.

Para mais informações, a documentação do GitHub Actions pode ser encontrada aqui.

--

--