GitHub Actions: Automatizando tarefas no fluxo de desenvolvimento

Lucas Andrade
5 min readMay 31, 2023

--

No processo de desenvolvimento como um todo, desde o código até o deploy, nos deparamos com muitos processos repetidos: Atualizar snapshots, rodar testes únitarios, fazer deploy em staging, concluir deploy em produção… todos esses tipos de processos são coisas que vão acabar fazendo parte de cada tarefa que for desenvolvida, sem exceções.

E como tudo na vida, não faz sentido fazer algo repetível quando se pode automatizá-lo. Além disso, não faz sentido trabalharmos facilitando a experiência de outras pessoas sem nem ao menos facilitar a nossa, economizando nosso tempo.

Existem DIVERSAS ferramentas que ajudam a automatizar seu processo de desenvolvimento (prática conhecida como CI/CD), e uma delas está atrelada diretamente à principal plataforma de quem trabalha com software: o Github.

Por isso, nesse artigo, vamos conhecer um pouco mais sobre o Github Actions, para que possamos criar, personalizar e compartilhar workflows automatizados diretamente no repositório.

O que é o GitHub Actions?

O GitHub Actions é um serviço de CI/CD fornecido pelo GitHub. Ele permite automatizar várias tarefas no desenvolvimento de software, como testes, compilação, implantação e muito mais. O GitHub Actions é baseado em eventos, onde cada action é acionada por eventos específicos, como push de código, criação de pull requests ou cronogramas pré-definidos.

No exemplo acima, temos um projeto em Express com um banco em MongoDB. Aqui, assim que abrirmos um pull request, o pipeline definido com a ajuda do Github Actions vai rodar todos os testes criados na api, em diferentes versões do Node e do driver do MongoDB (primeiro e segundo número entre parênteses, respectivamente),

Workflows

Os workflows são as principais unidades de automação no GitHub Actions. Eles são definidos por meio de arquivos YAML que podem ser configurados para responder a eventos específicos ou executar cronogramas. O arquivo especifica as ações a serem executadas, em qual ambiente e em qual ordem. Esses workflows podem ser facilmente configurados e personalizados para atender às necessidades específicas de um projeto.\

Actions

As actions são os componentes reutilizáveis que compõem um workflow. Elas são os blocos de construção fundamentais do GitHub Actions. As actions podem ser criadas pela comunidade ou pela equipe de desenvolvimento e podem ser compartilhadas com outros usuários. Existem actions pré-criadas disponíveis no GitHub Marketplace, além de outras personalizadas que podem ser desenvolvidas internamente. As actions podem ser combinadas para criar fluxos de trabalho complexos e personalizados.

Criando nosso workflow

  • Em um projeto, vamos começar entrando na aba "Actions" e clicando em "set up a workflow yourself";
  • Agora, podemos definir na tela seguinte os detalhes do arquivo YAML, ou seja, a definição do nosso workflow. Na direita podemos ver que o Github Actions possui um marketplace com diversos workflows conhecidos e pré-prontos (considere usar essa opção também pra procurar um útil e incrementá-lo);
  • Podemos definir os eventos que acionarão o workflow. Por exemplo, para acionar o workflow sempre que ocorrer um push na branch principal, podemos fazer algo como:
on:
push:
branches:
- main
  • Depois, vamos adicionar as etapas (steps) que serão executadas no workflow. Por exemplo, vamos adicionar uma etapa para instalar as dependências do projeto e outra para executar os testes. Nesse caso faríamos:
on:
push:
branches:
- main

jobs:
build:
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v2

- name: Install dependencies
run: npm install

- name: Run tests
run: npm test

Onde:

  • jobs define as tarefas a serem executadas no workflow. Você pode ter múltiplos jobs dentro de um workflow, permitindo executar diferentes ações simultaneamente;
  • build é o nome dado ao job. Você pode dar um nome descritivo para cada job no seu workflow, por exemplo, "build", "test", "deploy", entre outros;
  • runs-on especifica o ambiente no qual o job será executado. Neste exemplo, estamos utilizando "ubuntu-latest", que é uma imagem do sistema operacional Ubuntu no ambiente mais recente disponível no GitHub Actions. Existem outras opções disponíveis, como Windows e macOS;
  • steps define as etapas individuais que serão executadas dentro do job;
  • name é o nome dado a cada etapa (step). Ele serve para identificar a etapa no log de execução do workflow, tornando mais fácil entender o que acontece em cada etapa;
  • uses especifica uma ação do marketplace que será utilizada na etapa. No exemplo dado, estamos utilizando a ação actions/checkout@v2, que permite fazer o checkout do código fonte do repositório;
  • run executa comandos ou scripts na etapa. No exemplo dado, estamos usando o comando npm install para instalar as dependências do projeto e npm test para executar os testes.

*A definição do arquivo YAML também pode ser feita diretamente no seu ambiente de desenvolvimento, apenas exemplifiquei com o caminho mais amigável

Exemplos de uso do GitHub Actions

O exemplo do teste é o mais básico, mas existem inúmeras maneiras de aproveitar o poder do GitHub Actions para automatizar tarefas em um fluxo de trabalho de desenvolvimento. Alguns exemplos comuns incluem:

  • Implantação contínua em um ambiente de produção após a aprovação de um pull request;
  • Geração automática de documentação a partir do código fonte;
  • Notificação da equipe sobre alterações ou problemas no repositório;
  • Execução de tarefas de rotina, como limpeza de banco de dados ou criação de backups.

Vantagens do GitHub Actions

  • Integração perfeita com o GitHub: Como uma funcionalidade nativa do GitHub, o GitHub Actions se integra perfeitamente ao fluxo de trabalho existente e permite a automação direta no repositório;
  • Configuração flexível: Os workflows podem ser facilmente configurados e personalizados para se adequarem aos requisitos específicos do projeto;
  • Grande variedade de actions: O GitHub Marketplace possui uma ampla gama de actions pré-criadas que podem ser utilizadas, abrangendo diversas tecnologias e casos de uso;
  • Colaboração eficiente: Os workflows automatizados facilitam a colaboração entre os membros da equipe,

Simples, né? Gostaram da dica? Deixe sua sugestão ou comentário e até a próxima!

--

--

Lucas Andrade

Engenheiro de Software na Geekie, co-founder da Yeon e Criaway, aprendendo a aprender e a ensinar. Tech, música, esportes e o que mais eu puder conectar.