Como notificar o status da sua pipeline usando Github Actions e Discord
Igor Duca
Posted on April 27, 2023
Github Actions foi uma das melhores ferramentas que descobri e estudei recentemente. A possibilidade de poder escrever pipelines customizadas para cada situação e modificar cada processo de forma quase artesanal para o projeto é simplesmente incrível.
Não é de se esperar menos que perfeição e variedade no quesito plugins quando falamos sobre uma tecnologia produzida e distribuída pelo próprio Github. O Github Actions possui integração com inúmeros serviços externos e podemos exceder na criatividade e sofisticação durante os passos da pipe.
Nesse artigo vamos explorar as possibilidades usando curl e a API do Discord, sem um plugin propriamente dito, mas que exerce o mesmo papel de um. Primeiramente, vamos começar configurando o ambiente dentro do aplicativo do Discord.
O primeiro passo para fazer a integração, é escolher o canal de texto do seu servidor do Discord onde as mensagens de log serão enviadas. Entre em Editar Canal e vá em Integrações. Lá você vai encontrar a seção de Webhooks.
Webhook é a feature do Discord que nos possibilita a integrar produtos e plataformas externas com os canais de texto sem precisar de nenhuma forma de autenticação, funcionando como um widget ou um plugin externo.
Clique em criar um novo hook e clique no item criado para ver seus detalhes. Copie o URL do Webhook e agora já podemos partir para a configuração do Github Actions.
Com o repositório criado, vá na pasta do seu projeto e crie o diretório .github/workflows
e lá dentro crie o arquivo de configuração da Action que será criada, o nome do arquivo é de sua escolha, mas certifique-se de que sua extensão seja YAML. Nesse exemplo, vamos criar um arquivo chamado notificar-discord.yaml
.
Dentro do arquivo, vamos usar o código abaixo:
name: Build and Notify
on:
pull_request:
push:
branches:
- main
jobs:
lint:
name: Quality Tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install dependencies
run: npm install
- name: Build project
run: npm run build
- name: Notify Discord
env:
DISCORD_WEBHOOK_URL: ${{ secrets.DISCORD_WEBHOOK_URL }}
TARGET_BRANCH: ${{ secrets.TARGET_BRANCH }}
run: |
curl -X POST -H "Content-Type: application/json" \
-d '{"content": "Build feita com sucesso! ✅ \nStatus: `${{ job.status }}` \nAutor: @${{ github.actor }}"}' \
$DISCORD_WEBHOOK_URL
A Action criada no arquivo acima tem o seguinte fluxo:
- Ouvir mudanças na branch main (você pode mudar para a branch que preferir)
- Checar o repositório e fazer o checkout
- Buildar a aplicação
- Enviar a mensagem pelo Discord
⚠️ Caso ocorra erros durante o pipeline, a mensagem não será enviada e a Action será apontada como falha.
Para que a Action funcione corretamente, precisamos ir na seção de Secrets do Github e definir o DISCORD_WEBHOOK_URL, que é o URL do Webhook criado previamente. Navegue até a página de Secrets do repositório e crie o seu novo secret contendo o URL do Webhook criado.
Ao configurar os Secrets, sua pipeline com o Github Actions estará pronta para ser testada. Então vamos lá, crie um commit qualquer e faça o push para a branch escolhida no arquivo YAML.
Assim que o commit for feito, vá até sua página de Actions e veja os detalhes da sua pipeline.
Se tudo der certo, vá até o canal escolhido no Discord e você vai encontrar a mensagem enviada pelo bot criado juntamente com o Webhook.
Então é isso! xD
Essa é uma das features que descobri recentemente enquanto automatizava o CI/CD do meu projeto e resolvi compartilhar com vocês
Posted on April 27, 2023
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.