Post

[CICD] Github Action Discord 로 알람 보내기

알림

백엔드의 경우 배포를 할때 서버를 한번 다운시키고 다시 업시키는 구조이기 때문에 서버가 끊기는 시간이 잠깐 존재한다. 프론트와 협업을 할때, 프론트는 서버가 끊긴지 모르고 에러가 발생했다고 생각할 수 있기 때문에 이에 대해 알려주어야 한다. 하지만 배포할때마다 알려주는건 너무 번거롭기때문에 자동으로 알람을 보내 알리자는 취지에서 알람 기능을 도입하게되었다. 보통 Slack 을 이용해 메세지를 보내지만, 우리 프로젝트는 Discord 를 사용해 협업하기에 Discord 에 메세지를 보내도록 했다.

Webhook URL

먼저 Discord 의 Webhook URL 을 얻어야 한다. 디스코드서버 우클릭 > 서버 설정 > 연동을 클릭한다. 그 다음 웹후크에 들어가서 봇이름과 알림을 보낼 채널을 설정한다.

이미지

이미지

여기서까지 했다면 “웹후크 URL 복사” 버튼을 클릭해 URL을 알아두자.

Github - Webhooks

Github 에서 알람기능을 제공한다. Settings > Webhooks 로 들어가면 Webhook 을 설정할 수 있는 페이지가 나온다.

이미지

여기서 Just the push event 를 선택하면 push 가 발생할때마다 Discord 로 알람이 간다. Let me select individusal events 를 선택하면 알람을 보내고싶은것을 고를 수 있다.

Github Action

첫번째 방법을 사용했을때는 단점이 있었다. 첫째로 내가 브랜치별로 적용할 수 가 없었다. develop 브랜치에 push => discord dev 채널에 알람을 보내고싶은데 어떤 브랜치에 상관없이 하나의 채널로만 알람이 간다. 두번째 단점으로 좀 더 정확한 시간을 타겟팅할 수 없다. github action 에서 서버로 배포하기 직전에 알림을 보내야 프론트에서 좀 더 정확히 재부팅시간을 인식할 수 있다. push 될 때 보내면 github action 배포 과정까지의 시간이 1분가량 있는데 해당 시간은 그냥 날리게 된다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
name: action-test

    # ... 내용 생략 ...

      # Discord 에 알람 보내기
      - name: Discord notification
        env:
          DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
        uses: Ilshidur/action-discord@master
        with:
           args: '{{ EVENT_PAYLOAD.repository.full_name }}  배포 되었 습니다. 개발 서버가 재시작 됩니다.'


github action 코드에서 서버배포 전에 위 코드를 넣으면, 서버배포 직전에 Discord 에 알람을 보내 좀 더 정확한 시간을 타겟팅할 수 있다. secrets.DISCORD_WEBHOOK 은 Github 의 Repository Secrets 에 등록해둔 Discord 웹후크 URL 이다. 어떻게 등록하지 모른다면 Repository Secret 등록 글을 참고하자.

action-discord 에 대해 자세히 알고싶다면 여기 로 가면된다.

결과

이미지

이런식으로 배포될때마다 Discord 알람이 간다. 프론트에서는 해당 알람을 보고 서버가 언제 재시작하는지 알 수 있어 편해졌다!

Reference

https://github.com/marketplace/actions/actions-for-discord

This post is licensed under CC BY 4.0 by the author.