[Part 4] CI/CD Slack 채널 연동

CI/CD를 운영하면서 가장 중요하게 생각한 부분 중 하나는 배포 상태를 팀원 모두가 실시간으로 확인할 수 있는 환경을 만드는 것이었다.
기존에는 GitHub Actions 페이지에 직접 접속하거나 서버 로그를 확인해야 배포 성공 여부를 알 수 있었다.
하지만 여러 명이 동시에 개발하는 환경에서는 배포 현황이 특정 담당자만 알고 있는 것이 아니라 팀 전체에 공유되어야 한다고 판단했다.
그래서 GitHub Actions Workflow에 Slack Webhook을 연동하여 배포 결과를 자동으로 전달하도록 구성하였다.
Slack 연동 구조
배포 Workflow의 마지막 단계에서 성공 또는 실패 여부에 따라 Slack Webhook API를 호출하도록 구현하였다.
Git Push
↓
GitHub Actions
↓
Build & Deploy
↓
Health Check
↓
Slack NotificationGitHub Secrets를 이용한 Webhook 관리
Slack Webhook URL은 민감 정보이므로 Workflow 내부에 직접 작성하지 않고 GitHub Secrets로 관리하였다.
Repository
└─ Settings
└─ Secrets and Variables
└─ Actions
└─ SLACK_WEBHOOK_URLWorkflow에서는 Secrets 값을 참조하여 Slack API를 호출한다.
${{ secrets.SLACK_WEBHOOK_URL }}배포 성공 알림
배포가 정상적으로 완료되면 Slack 채널에 성공 메시지를 전송한다.
실제 Workflow에서는 GitHub Actor와 Commit 정보를 활용하여 누가 어떤 버전을 배포했는지 확인할 수 있도록 구성하였다.
- name: Slack Notification - Success
if: success()
run: |
curl -s -X POST \
-H 'Content-type: application/json' \
--data "{
\"text\":\"🚀 [DEV][Backend] Deployed by *${{ github.actor }}*
Repo: ${{ github.repository }}
Commit: ${{ github.sha }}\"
}" \
"${{ secrets.SLACK_WEBHOOK_URL }}"Slack 메시지 예시
🚀 [DEV][Backend] Deploy Success
배포자 : solfany
Repository : company_backend
Branch : dev
Commit : a1b2c3d
배포가 정상적으로 완료되었습니다.배포 실패 알림
배포 중 오류가 발생하면 즉시 실패 메시지를 전송하도록 구성하였다.
- name: Slack Notification - Failure
if: failure()
run: |
curl -s -X POST \
-H 'Content-type: application/json' \
--data "{
\"text\":\"❌ [DEV][Backend] Deploy FAILED\"
}" \
"${{ secrets.SLACK_WEBHOOK_URL }}"Slack 메시지 예시
❌ [DEV][Backend] Deploy Failed
배포자 : solfany
Repository : company_backend
Branch : dev
Commit : a1b2c3d
GitHub Actions 로그를 확인해주세요.실패 시에는 GitHub Actions 실행 링크를 함께 제공하여 담당자가 즉시 로그를 확인할 수 있도록 하였다.
운영 서버 자동 롤백 알림
운영 환경에서는 단순 실패 알림으로 끝나지 않도록 구성하였다.
배포 후 Health Check에 실패하면 자동 롤백을 수행하고, 롤백 결과까지 Slack으로 전송한다.
신규 버전 배포
↓
Health Check 실패
↓
자동 롤백
↓
Slack 알림Slack 메시지 예시
⚠️ [PROD][Backend] Deploy Failed
Health Check 실패
자동 롤백 수행
복구 버전 :
prod-f4d2a9c
상태 :
Rollback Success운영자는 Slack 메시지만 확인해도 현재 서비스 상태를 파악할 수 있다.
Slack 알림에 포함한 정보
단순 성공/실패만 보내는 것이 아니라 실제 운영에 필요한 정보를 함께 제공하였다.
| 항목 | 설명 |
|---|---|
| 배포 환경 | DEV / PROD |
| 서비스 | Backend / Web / Admin |
| 배포자 | GitHub Actor |
| Repository | 저장소 정보 |
| Branch | 배포 브랜치 |
| Commit SHA | 배포 버전 식별 |
| Commit Link | 커밋 상세 확인 |
| GitHub Actions Link | 실행 로그 확인 |
| 배포 결과 | 성공 / 실패 |
| Rollback 상태 | 운영 서버 롤백 결과 |
| 배포 소요 시간 | 전체 배포 시간 |
적용 효과
Slack 알림을 적용한 이후에는 GitHub Actions 페이지에 직접 접속하지 않아도 배포 현황을 확인할 수 있게 되었다.
특히 다음과 같은 부분에서 효과를 체감할 수 있었다.
- 누가 배포했는지 즉시 확인 가능
- 어떤 커밋이 반영되었는지 추적 가능
- 장애 발생 시 빠른 대응 가능
- 자동 롤백 여부 확인 가능
- 운영 서버 상태 공유 가능
결과적으로 Slack 채널이 단순 알림 수단이 아니라 배포 이력을 확인할 수 있는 운영 대시보드 역할을 수행하게 되었다.