Como notificar o status da sua pipeline usando Github Actions e Discord

yelldutz

Igor Duca

Posted on April 27, 2023

Como notificar o status da sua pipeline usando Github Actions e Discord

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.

Seção de Webhooks do canal

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

Enter fullscreen mode Exit fullscreen mode

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.

Mensagem enviada pelo 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

💖 💪 🙅 🚩
yelldutz
Igor Duca

Posted on April 27, 2023

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related