[Github Actions] Slack-WebHook을 활용하여 PR 요청할때마다 슬랙메시지 보내주도록하기
구현 목표
- (구현완료) PR 리뷰요청 이벤트가 발생하면, 슬랙채널에 알림을 보낸다.
- (아직 진행중) PR 완료후 develop 브랜치에 merge가 완료되면 슬랙채널에 알림을 보낸다.
[방법1] 깃헙봇으로 Repository 에서 이벤트 발생할때 알림 메시지 보내기
1. Slack 워크스페이스와 깃헙봇 연동하기
앱 > Github > 관리 > 앱 찾아보기
- 앱 홈페이지 버튼 클릭
2. 내가 소식받고 싶은 채널에 깃헙봇을 구독하기
- 앱 > Github 클릭 > 좌측상단 Github 클릭
- 깃헙 이벤트가 발생하면, 알림을 받는 채널 선택하기
원하는 래포지토리 구독하기
- [구독래포지토리명]
- 팀 내의 래포지토리를 구독할때: [팀명]/[래포지토리명]
- 개인 래포지토리를 구독할때: [개인깃헙닉네임]/[래포지토리명]
- 필자의 경우: [팀명]dyphi-dev/[래포지토리명]MyVivache-Backend
/github subscribe [구독래포지토리명]
결과
구독한 래포지토리에 이슈/PR 관련 이벤트가 발생하면 깃헙봇에서 보낸다.
- 래포지토리 구독 해제하기
깃헙봇은 구독한 래포지토리에서 발생한 모든 이벤트가 발생하면 슬랙메시지가 나오도록되어있다.
이슈생성, 이슈종료, PR요청, PR머지 등등등
깃헙액션까지 활용하고 있는지라 해당 채널방에 메시지가 대량으로 발생하여 팀원들의 집중에 방해할거같았다.
방해가된다면 알림을 끌수도 있기때문에... 다른 방법을 생각해보기로했다.
PR 요청할때와 머지했을 때 등 특정 이벤트가 발생했을때만 알림을 보낼수는 없을까?
되도록이면 멘션알림을 해서 멘션대상자에게 다이렉트로 전송할 수 있게끔말이다.
찾아보니까 웹훅URL과 YML파일로도 특정이벤트가 발생했을때만 슬랙메시지를 보낼 수 있다.
[방법2] PR 이벤트 발생하면 Slack Webhook 으로 메시지 전송하기
1. Webhook 을 생성하기
- Slack-API 사이트에 접속 > 앱 만들기
- 웹훅 URL 복사하기
- Github Repository Secret에 Webhook URL 등록하기
2. YML 파일 작성하기
yml파일은 / .github / workflows 위치에 저장해야한다.
# file-path: /.github/workflows/slack-alarm-webhook.yml
name: Slack Alarm Webhook
on:
pull_request:
types: [opened]
pull_request_review:
types: [submitted]
pull_request_review_comment:
types: [created, edited]
jobs:
mention_notification:
name: Mention Notification
runs-on: ubuntu-latest
steps:
- uses: Laurenfrost/mention-to-slack@latest
with:
configuration-path: .github/mention-to-slack.yml
repo-token: ${{ secrets.GH_TOKEN }}
slack-webhook-url: ${{ secrets.SLACK_WEBHOOK_URL }}
configuration-path 에 매핑되는 파일을 추가해야한다.
.github 디렉토리에 mention-to-slack.yml 파일을 추가한다.
# file-path: /.github/mention-to-slack.yml
# githubNickName : "slack-ID"
EunKangChoi-Dyphi: "XXXXXXXXXXX"
멤버의 프로필에서 슬랙아이디 를 얻을 수 있다
결과
마치며...
예전부터 해봐야지 하면서 미룬 일을 드디어 실천했다.
오픈소스들이 많이 있어서 덕분에 큰 어려움없이 했다.
이것은 회사에서 요청한것도 아니며, 내가 자발적으로 하기로 한 일이다.
팀원들이 계속 직접 슬랙메시지를 보내면서 리뷰요청을 하길래, 이러한 불편함을 줄이고자 해봤다.
머지가 완료됐을때 채팅방이나 스레드에 메시지를 보내는 방법등 고려를 해보고싶다.
오픈소스로 되어있는게 보아 실제로 내가 직접 깃헙과 슬랙연동하는 코드를 작성해보고싶다.
아무튼 그래도 그동안 미뤄왔던것을 실천한거 같아서 뿌듯하다.