Backend/꾸준히 TIL

[Github Actions] Slack-WebHook을 활용하여 PR 요청할때마다 슬랙메시지 보내주도록하기

개발하는 후딘 2023. 7. 6. 20:10
728x90
반응형

구현 목표

  • (구현완료) PR 리뷰요청 이벤트가 발생하면, 슬랙채널에 알림을 보낸다.
  • (아직 진행중) PR 완료후 develop 브랜치에 merge가 완료되면 슬랙채널에 알림을 보낸다.

[방법1] 깃헙봇으로 Repository 에서 이벤트 발생할때 알림 메시지 보내기

1. Slack 워크스페이스와 깃헙봇 연동하기

앱 > Github > 관리 > 앱 찾아보기

 

 

  • 앱 홈페이지 버튼 클릭

2. 내가 소식받고 싶은 채널에 깃헙봇을 구독하기

  • 앱 > Github 클릭 > 좌측상단 Github 클릭

 

  • 깃헙 이벤트가 발생하면, 알림을 받는 채널 선택하기

 

원하는 래포지토리 구독하기

  • [구독래포지토리명]
    • 팀 내의 래포지토리를 구독할때: [팀명]/[래포지토리명]
    • 개인 래포지토리를 구독할때: [개인깃헙닉네임]/[래포지토리명]
    • 필자의 경우: [팀명]dyphi-dev/[래포지토리명]MyVivache-Backend

 

/github subscribe [구독래포지토리명]

 

결과

구독한 래포지토리에 이슈/PR 관련 이벤트가 발생하면 깃헙봇에서 보낸다.

이슈생성했을때
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"

 

멤버의 프로필에서 슬랙아이디 를 얻을 수 있다

 

결과


마치며...

예전부터 해봐야지 하면서 미룬 일을 드디어 실천했다.

오픈소스들이 많이 있어서 덕분에 큰 어려움없이 했다.

이것은 회사에서 요청한것도 아니며, 내가 자발적으로 하기로 한 일이다.

팀원들이 계속 직접 슬랙메시지를 보내면서 리뷰요청을 하길래, 이러한 불편함을 줄이고자 해봤다.

 

머지가 완료됐을때 채팅방이나 스레드에 메시지를 보내는 방법등 고려를 해보고싶다.

오픈소스로 되어있는게 보아 실제로 내가 직접 깃헙과 슬랙연동하는 코드를 작성해보고싶다.

아무튼 그래도 그동안 미뤄왔던것을 실천한거 같아서 뿌듯하다.

728x90
반응형