Neste artigo vamos nos aprofundar em como trabalhar com workflows no Github Actions, focando na parte que acionam eles, o que chamamos de eventos (events).
Vamos começar com o que são eventos. Em seguida, vamos ver como podem ser úteis dentro dos nossos workflows no Github Actions.
Mas o que são eventos?
Eventos representam todas as atividades específicas que um usuário pode realizar em um repositório do Github. Essas ações podem ser realizadas de diversas maneiras:
- na interface gráfica do Github.
- no terminal usando Git ou Github CLI.
- consumindo a API do Github.
Exemplos de eventos:
- criação de uma pull request
- adição de um comentário numa issue
- criação de uma tag
- atualização de uma branch (push)
Eventos disponíveis
Para executar um workflow no Github Actions, é preciso configurar no arquivo .yml quais são os eventos que vão acionar o workflow. Importante:
- A ação de um evento para iniciar a execução de um workflow é chamado de trigger.
- Um workflow pode ser acionado por um ou mais eventos.
Mas atenção: nem todos os eventos existentes têm suporte no momento. Confira a lista dos eventos suportados pelo Github Actions atualmente aqui: eventos que acionam fluxos de trabalho.
Configuração de eventos nos workflows
A palavra reservada na nomenclatura do Github Actions para configurar os eventos que vão iniciar nosso workflow é a palavra on.
Exemplo: Para acionar o workflow quando um evento push ocorre em qualquer branch do repositório:
on: push
Exemplo: Para acionar o workflow quando um evento push ou um evento pull request ocorre em qualquer branch do repositório:
on: [push, pull_request]
Também é possível customizar esses eventos, para eles serem um pouco mais específicos.
Exemplo: Para acionar o workflow quando um evento push ocorre apenas na branch dev do repositório:
on:
push
branches:
- dev
Existem assim vários subtipos para cada evento de acordo com seu contexto, tais como branches, types, paths, workflows etc…
Triggers interessantes
Agora que entendemos como funcionam esses eventos e triggers, vamos conversar sobre algumas possibilidades interessantes de como acionar um workflow.
Aqui não vamos falar sobre eventos clássicos como push, pull request, issue, ou tag. Mas sim de cenários mais específicos que podem ser úteis no nosso dia a dia.
1 – Agendamento
O Github Actions permite que você agende a execução de workflows em horários UTC específicos, através do uso de CRONTAB. Para isso, é preciso usar a palavra reservada schedule.
Exemplo: Para acionar um workflow às 8h00 UTC todos os dias:
on:
schedule:
– cron: ‘0 8 * * *’
Inclusive, usamos isso para executar algumas fórmulas do Ritchie CLI no nosso dia a dia, conforme vocês podem ver nesse Office Hours que nossa equipe gravou.
2 – Workflow para workflow
Também é possível acionar workflows a partir de outros workflows. Para isso, é preciso usar a palavra reservada workflow_run.
Exemplo: Para acionar um workflow quando um workflow anterior chamado First Workflow é finalizado.
on:
workflow_run:
workflows: ["First Workflow"]
types:
- completed
3 – Repositório para repositório
A Github API permite realizar dispatch events entre repositórios. Esse tipo de evento foi adicionado ao Github Actions com o uso da palavra reservado repository_dispatch.
Dessa maneira, você pode acionar a execução de um workflow, por exemplo, a partir de um outro repositório (em um outro workflow) ou do consumo da API do Github (fora do Github neste caso).
Exemplo: Para acionar um workflow recebendo um dispatch event
on:
repository_dispatch:
Na prática:
Neste caso específico, o workflow inicial até espera um dispatch event de volta confirmando a execução do segundo workflow.
4 – Trigger manual
Quando estamos testando novos workflows, não precisamos necessariamente depender de um evento do Github. O Github Actions também permite que você inicie o workflow manualmente através de um click na interface gráfica. Para isso, é preciso usar a palavra reservada workflow_dispatch.
Exemplo: Para acionar um workflow manualmente através da interface gráfica do Github:
on:
workflow_dispatch:
Na prática:
Aqui vou mostrar um exemplo permitindo inserir um input manualmente no workflow:
- Para acionar o workflow manualmente na aba Actions do repositório:
![Ilustração da interface gráfica do Github num repositório de POC onde mostra como iniciar um workflow manualmente no Github Actions.](https://zup.com.br/wp-content/uploads/2021/09/Workflows-no-GitHub-Actions-1.png)
- O resultado: workflow run
![Ilustração da interface gráfica do Github num repositório de POC onde mostra o resultado do acionamento manual do workflow anterior no Github Actions.](https://zup.com.br/wp-content/uploads/2021/09/Workflows-no-GitHub-Actions-2.png)
Workflow no GitHub Actions: mais praticidade para o seu dia a dia
Por hoje é isso! Espero que este artigo tenha deixado mais claro como usar eventos no Github Actions para usar com seus workflows nos seus repositórios do Github.
Quem quiser aprofundar no Github Actions para testar o que foi explicado aqui e muito mais, é só criar seu repositório com seus workflows e experimentar. Isso, pois o plano FREE da plataforma permite você testar seus fluxos de trabalhos em repositórios públicos sem limites de tempo.
Deixo aqui registrado um repositório pessoal, onde testei vários tipos de implementações e eventos diferentes com Github Actions, caso queira fazer um fork.
Lembrando que a documentação do Github Actions em português é muito boa e vale uma lida.
Referências