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을 통해 공유하면 전체 팀이 코드 배포에 대한 투명성을 확보할 수 있습니다.
- 배포 로그 및 성공/실패 알림을 통해 배포 프로세스를 명확하게 파악할 수 있습니다.
GitHub Actions과 Slack 연동 방법
Slack에서 알림을 받을 곳에 채널 생성을 진행합니다.
진행 중인 프로젝트 명으로 생성합니다.
좌측 하단 앱 추가 버튼을 클릭하고 GitHub를 입력합니다. (앱 추가에 없으면 우측 상단 앱 디렉터리를 클릭합니다.)
앱 디렉터리에서 다시 GitHub를 입력합니다.
Slack에 추가를 클릭하고 다음으로 넘어갑니다.
채널 포스트에서 아까 생성한 채널을 선택하고 GitHub 통합 추가를 클릭합니다.
통합 저장을 클릭하시면 됩니다.
프로젝트 채널 채팅 창에 통합 추가를 확인합니다.
프로젝트 채팅 창에 아래의 명령어를 입력합니다.
/github signin
명령어 입력 후 아래와 같은 창이 뜨면 Connect GitHub account를 클릭합니다.
Connect GitHub account를 클릭
Verification Code 6자리를 복사합니다.
다시 Slack으로 돌아와서 Enter Code를 눌러 복사한 값을 붙여 넣습니다.
정상적으로 진행되면 아래와 같은 화면이 나타납니다.
GitHub 주소를 연결하기 위해 채팅 창에 명령어를 입력합니다.
github subscribe owner/repository // owner(생성자이름)/repository(프로젝트 이름) // https://github.com/gozneokhan/final-chatPT-project.git
연결이 완료되면 아래와 같이 나타납니다.
Git Actions 연동
다음으로 Git Actions 연동을 진행하기 위해 아래의 링크로 이동합니다.
Create New App을 클릭하여 앱을 생성합니다.
From scratch를 클릭합니다.
App Name 설정과 함께 workspace를 선택하고 Create App을 진행합니다.
Settings -> Basic Information -> Add features and functionality 경로 대로 선택하여 Incoming Webhooks를 누르고 활성화 시킵니다.
Add New Webhook to Workspace 버튼을 클릭하여 워크스페이스와 채널에 연결합니다.
워크스페이스와 채널 연결에 성공하면 아래의 Webhook URL을 Copy 합니다.
GitHub -> Settings -> Security -> Secrets and variables -> Actions 경로로 이동하여 New repository secret 클릭하여 방금 Copy한 Webhook URL을 넣어줍니다.
아래와 같이 등록되면 성공입니다.
다음으로 yml 파일 작성을 위해 Actions에서 set up a workflow yourself를 클릭합니다.
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_request
및push
이벤트에 대한 브랜치 필터를 설정하여, 스크립트가gitactions
또는main
브랜치에서 발생한 경우에만 작업이 수행되도록 합니다.
작업(Job) 설정
- 작업의 이름은
build
로 명명하며, 운영체제로ubuntu-latest
를 사용합니다.
작업 단계 설정
- Slack 알림 설정
action-slack
액션을 사용하여 Slack 알림을 구성합니다.- 작업 상태를
job.status
로, 작성자를www-be
로 설정합니다. - 필요한 정보를
fields
로 지정하여 Slack에 표시되는 내용을 조절합니다. - 액션은 실패 또는 취소된 경우에만 언급되도록 설정되어, 성공한 경우에는 언급되지 않습니다.
- 환경 변수 설정
- 두 번째 단계에서는 환경 변수로 Slack 웹훅 URL을 설정합니다.
실행 제어 설정
if: always()
를 활용하여 작업이 실패하거나 취소된 경우에도 항상 작업이 수행되도록 설정합니다. 이는 GitHub Actions가 이벤트를 항상 수신할 수 있도록 보장합니다.
주의사항
- 스크립트에 사용된
secrets.SLACK_WEBHOOK_URL
은 GitHub에서 제공하는 비밀 변수로, 해당 변수에는 Slack 웹훅 URL이 반드시 포함되어야 합니다. 이 정보는 스크립트의 환경 변수로 활용되어 Slack에 알림을 전송합니다.
위 내용을 복사하여 붙여 넣습니다.
Commit changes를 클릭하여 마무리합니다.
모든 등록 과정을 마치면 아래와 같이 Slack에서 알림을 받을 수 있습니다.