Git Actions ⇒ Slack에 연동해서 빌드 결과 받기
Git Actions ⇒ Slack에 연동해서 빌드 결과 받기

Git Actions ⇒ Slack에 연동해서 빌드 결과 받기

Tags
Node.js
CI/CD
Github Actions
Slack
Published
February 6, 2024
Author
gozneokhan

GitHub Actions과 Slack 연동의 이유

GitHub Actions를 활용하여 배포 전 빌드 결과를 실시간으로 확인하기 위해 Slack과의 연동은 매우 유용한 방법입니다.
이를 통해 얻을 수 있는 이점으로는
실시간 알림 (Real-time Notifications)
  • GitHub Actions은 코드 변경 사항에 대한 자동화된 워크플로를 설정할 수 있는 도구입니다.
  • 빌드가 성공하거나 실패할 때 바로 Slack으로 알림을 받으면, 팀원들은 더 빠르게 현재 상태를 파악할 수 있습니다.
효과적인 협업 (Efficient Collaboration)
  • Slack을 통해 빌드 결과 및 배포 상태를 공유하면 팀 전체가 동일한 정보를 실시간으로 공유할 수 있습니다.
  • 팀원들 간 의사 소통이 빨라져 작업 효율성이 향상됩니다.
빠른 대응과 문제 해결 (Quick Response and Issue Resolution)
  • 빌드 실패 또는 오류 발생 시 즉시 Slack으로 알림을 받아 문제에 대한 신속한 대응이 가능합니다.
  • 이를 통해 빠른 오류 해결과 코드 품질 향상이 가능합니다.
개발 생산성 향상 (Increased Development Productivity)
  • GitHub Actions과 Slack의 연동은 개발자들에게 필요한 정보를 직관적으로 제공함으로써 생산성을 높일 수 있습니다.
  • 개발자들은 더 많은 시간을 코드 작성에 집중할 수 있게 됩니다.
코드 배포 투명성 (Code Deployment Transparency)
  • GitHub Actions에서 발생하는 이벤트와 빌드 결과를 Slack을 통해 공유하면 전체 팀이 코드 배포에 대한 투명성을 확보할 수 있습니다.
  • 배포 로그 및 성공/실패 알림을 통해 배포 프로세스를 명확하게 파악할 수 있습니다.
notion image

GitHub Actions과 Slack 연동 방법

Slack에서 알림을 받을 곳에 채널 생성을 진행합니다.
notion image
진행 중인 프로젝트 명으로 생성합니다.
notion image
좌측 하단 앱 추가 버튼을 클릭하고 GitHub를 입력합니다. (앱 추가에 없으면 우측 상단 앱 디렉터리를 클릭합니다.)
notion image
앱 디렉터리에서 다시 GitHub를 입력합니다.
notion image
Slack에 추가를 클릭하고 다음으로 넘어갑니다.
notion image
채널 포스트에서 아까 생성한 채널을 선택하고 GitHub 통합 추가를 클릭합니다.
notion image
통합 저장을 클릭하시면 됩니다.
notion image
notion image
프로젝트 채널 채팅 창에 통합 추가를 확인합니다.
notion image
notion image
프로젝트 채팅 창에 아래의 명령어를 입력합니다.
/github signin
notion image
명령어 입력 후 아래와 같은 창이 뜨면 Connect GitHub account를 클릭합니다.
notion image
Connect GitHub account를 클릭
notion image
Verification Code 6자리를 복사합니다.
notion image
다시 Slack으로 돌아와서 Enter Code를 눌러 복사한 값을 붙여 넣습니다.
notion image
정상적으로 진행되면 아래와 같은 화면이 나타납니다.
notion image
GitHub 주소를 연결하기 위해 채팅 창에 명령어를 입력합니다.
github subscribe owner/repository // owner(생성자이름)/repository(프로젝트 이름) // https://github.com/gozneokhan/final-chatPT-project.git
notion image
연결이 완료되면 아래와 같이 나타납니다.
notion image

Git Actions 연동

다음으로 Git Actions 연동을 진행하기 위해 아래의 링크로 이동합니다.
Create New App을 클릭하여 앱을 생성합니다.
notion image
From scratch를 클릭합니다.
notion image
App Name 설정과 함께 workspace를 선택하고 Create App을 진행합니다.
notion image
Settings -> Basic Information -> Add features and functionality 경로 대로 선택하여 Incoming Webhooks를 누르고 활성화 시킵니다.
notion image
notion image
Add New Webhook to Workspace 버튼을 클릭하여 워크스페이스와 채널에 연결합니다.
notion image
notion image
워크스페이스와 채널 연결에 성공하면 아래의 Webhook URLCopy 합니다.
notion image
GitHub -> Settings -> Security -> Secrets and variables -> Actions 경로로 이동하여 New repository secret 클릭하여 방금 Copy한 Webhook URL을 넣어줍니다.
notion image
아래와 같이 등록되면 성공입니다.
notion image
다음으로 yml 파일 작성을 위해 Actions에서 set up a workflow yourself를 클릭합니다.
notion image

Slack Notification GitHub Actions 스크립트 작성 가이드

GitHub Actions를 활용한 스크립트를 통해 주로 두 가지 종류의 이벤트(pull_request 및 push)에 대한 작업을 정의합니다. 이 스크립트는 해당 이벤트가 gitactions 또는 main 브랜치에서 발생할 때만 실행되도록 조건을 설정합니다.
name: Slack Notification on: pull_request: branches: [ "gitactions", "main" ] push: branches: [ "gitactions", "main" ] jobs: build: runs-on: ubuntu-latest steps: - name: action-slack uses: 8398a7/action-slack@v3 with: status: ${{ job.status }} author_name: www-be fields: repo,message,commit,author,action,eventName,ref,workflow,job,took if_mention: failure,cancelled env: SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} # required if: always() # Pick up events even if the job fails or is canceled.
이벤트 트리거 설정
  • pull_requestpush 이벤트에 대한 브랜치 필터를 설정하여, 스크립트가 gitactions 또는 main 브랜치에서 발생한 경우에만 작업이 수행되도록 합니다.
작업(Job) 설정
  • 작업의 이름은 build로 명명하며, 운영체제로 ubuntu-latest를 사용합니다.
작업 단계 설정
  1. Slack 알림 설정
      • action-slack 액션을 사용하여 Slack 알림을 구성합니다.
      • 작업 상태를 job.status로, 작성자를 www-be로 설정합니다.
      • 필요한 정보를 fields로 지정하여 Slack에 표시되는 내용을 조절합니다.
      • 액션은 실패 또는 취소된 경우에만 언급되도록 설정되어, 성공한 경우에는 언급되지 않습니다.
  1. 환경 변수 설정
      • 두 번째 단계에서는 환경 변수로 Slack 웹훅 URL을 설정합니다.
실행 제어 설정
  • if: always()를 활용하여 작업이 실패하거나 취소된 경우에도 항상 작업이 수행되도록 설정합니다. 이는 GitHub Actions가 이벤트를 항상 수신할 수 있도록 보장합니다.
주의사항
  • 스크립트에 사용된 secrets.SLACK_WEBHOOK_URL은 GitHub에서 제공하는 비밀 변수로, 해당 변수에는 Slack 웹훅 URL이 반드시 포함되어야 합니다. 이 정보는 스크립트의 환경 변수로 활용되어 Slack에 알림을 전송합니다.
위 내용을 복사하여 붙여 넣습니다.
notion image
Commit changes를 클릭하여 마무리합니다.
notion image
모든 등록 과정을 마치면 아래와 같이 Slack에서 알림을 받을 수 있습니다.
notion image

Reference