[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 알람이 간다. 프론트에서는 해당 알람을 보고 서버가 언제 재시작하는지 알 수 있어 편해졌다!