김솔비 블로그
기술 블로그

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

3분 읽기시리즈 5/6

CI/CD를 운영하면서 가장 중요하게 생각한 부분 중 하나는 배포 상태를 팀원 모두가 실시간으로 확인할 수 있는 환경을 만드는 것이었다.

기존에는 GitHub Actions 페이지에 직접 접속하거나 서버 로그를 확인해야 배포 성공 여부를 알 수 있었다.

하지만 여러 명이 동시에 개발하는 환경에서는 배포 현황이 특정 담당자만 알고 있는 것이 아니라 팀 전체에 공유되어야 한다고 판단했다.

그래서 GitHub Actions Workflow에 Slack Webhook을 연동하여 배포 결과를 자동으로 전달하도록 구성하였다.

Slack 연동 구조

배포 Workflow의 마지막 단계에서 성공 또는 실패 여부에 따라 Slack Webhook API를 호출하도록 구현하였다.

Git Push
    ↓
GitHub Actions
    ↓
Build & Deploy
    ↓
Health Check
    ↓
Slack Notification

GitHub Secrets를 이용한 Webhook 관리

Slack Webhook URL은 민감 정보이므로 Workflow 내부에 직접 작성하지 않고 GitHub Secrets로 관리하였다.

Repository
 └─ Settings
     └─ Secrets and Variables
          └─ Actions
               └─ SLACK_WEBHOOK_URL

Workflow에서는 Secrets 값을 참조하여 Slack API를 호출한다.

yaml
${{ secrets.SLACK_WEBHOOK_URL }}

배포 성공 알림

배포가 정상적으로 완료되면 Slack 채널에 성공 메시지를 전송한다.

실제 Workflow에서는 GitHub Actor와 Commit 정보를 활용하여 누가 어떤 버전을 배포했는지 확인할 수 있도록 구성하였다.

yaml
- 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

배포가 정상적으로 완료되었습니다.

배포 실패 알림

배포 중 오류가 발생하면 즉시 실패 메시지를 전송하도록 구성하였다.

yaml
- 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 채널이 단순 알림 수단이 아니라 배포 이력을 확인할 수 있는 운영 대시보드 역할을 수행하게 되었다.