본문 바로가기

Infra/CI & CD

[Github Actions] 깃허브 Pull Request 생성 시 구글챗에 알림 전송하기

개요

지난 깃허브 커밋 시 구글챗에 알림 전송하는 기능을 포스팅했는데

 

[Github Actions] 깃허브 커밋 시 구글챗에 알림 전송하기

개요 회사에서 Git 을 쓰고있는데 다른 팀원이 특정 브런치에 푸시하거나 PR 생성될 경우 메일이 오기는 하는데 메일은 확인을 잘 안 하기도 하고, 보기가 불편해서 회사에서 메신저로 사용중인 "

lisc.tistory.com

 

이번에는 Pull Request 생성 시 알림 전송하는 방법에 대해서 얘기하겠다.

 

구글챗 채팅방에 웹훅 추가, 깃허브 리포지토리에 웹훅 URL 시크릿 키 설정

이 두가지는 위 포스팅에서 이미 진행했고, 되어있는 걸로 가정하고 설명하겠다.

 

Actions 탭 선택을 하면 다양한 템플릿이 나오는데 [set up a workflow yourself] 를 선택한다.

 

 

yml 파일명을 설정하고, 코드 부분에는 아래 코드를 복사 붙여넣기 한 후 [Commit changes] 버튼을 클릭한다.

해당 브랜치에 Pull Request 가 [생성, 재생성, 동기화, 리뷰준비완료] 의 상태가 되면 구글챗 채팅방에 알림이 전송되는 형식이다.

알림 메시지 형식은 다양하게 정할 수 있겠으나, 나는 작성자와 PR 제목, PR 내용, 발생 시각을 전송하도록 했다.

 

pr-google-chat-alert.yml

name: Deploy ## 21

# 명시된 브랜치 목록들을 base branch로 하는 PR이 [생성, 재생성, head 브랜치 동기화, PR 리뷰 준비 완료] 이벤트 발생 시 워크플로우 동작
on:
  pull_request:
    branches:
      - main
      - develop
      - feature/*
      - release/*
      - hotfix/*
    types: [opened, reopened, synchronize, ready_for_review] # 해당 타입들은 github webhook payload 타입 목록을 따릅니다

jobs:
  deploy:
    runs-on: ubuntu-latest # 워크플로우가 실행될 GitHub Actions 러너의 OS를 지정합니다.

    steps:
      - name: Notify Google Chat on Pull Request
        run: |
          PR_TITLE="${{ github.event.pull_request.title }}"
          PR_BODY="${{ github.event.pull_request.body }}"
          PR_USER_ID="${{ github.event.pull_request.user.id }}"
          PR_USER_LOGIN="${{ github.event.pull_request.user.login }}"

          # GitHub Actions의 시간은 UTC로 제공되므로, Asia/Seoul로 변환
          CURRENT_TIME_KST=$(TZ="Asia/Seoul" date '+%Y-%m-%d %H:%M:%S')

          curl -X POST \
          -H 'Content-Type: application/json' \
          -d "{\"text\": \"🐬 [Platform-Monitoring]\n\n${PR_USER_LOGIN} 님이 Pull Request 를 생성하였습니다.\n\n- PR 제목: ${PR_TITLE}\n- PR 내용: ${PR_BODY}\n- 시각: ${CURRENT_TIME_KST}\"}" \
          "${{ secrets.GOOGLE_CHAT_WEBHOOK_URL }}"

 

 

 

이제 실제로 테스트를 해보자.

 

develop 브랜치를 하나 생성 후, 간단하게 README.md 파일을 수정 후 커밋을 했다.

 

알림이 잘 오는 것을 확인할 수 있다.

반응형