Theme:

Jenkins 빌드가 실패했는데 아무도 몰라서 반나절이 지나간 경험이 있다면, 빌드 알림 자동화가 필요합니다.

Jenkins-Slack 연동 은 빌드 결과(성공/실패)를 실시간으로 팀 채널에 자동 전송하여, 빌드 실패를 즉시 인지하고 빠르게 대응할 수 있게 합니다.

PLAINTEXT
코드 Push → Jenkins 빌드 실행 → 빌드 결과(성공/실패) → Slack 채널에 알림 전송

1. Slack에 Jenkins CI 앱 추가

  1. Slack에서 더보기 > ** 앱** 으로 이동합니다.
  2. Jenkins CI 를 검색하여 추가합니다.
  3. 앱 추가 후 설정 지침 페이지에서 아래 값을 확인합니다.
항목설명사용 위치
팀 하위 도메인 (Team Subdomain)Slack 워크스페이스 이름Jenkins Slack 설정의 Workspace
통합 토큰 자격 증명 ID (Integration Token)인증용 토큰Jenkins Credential에 등록

2. Jenkins에 Slack 플러그인 설치

Manage Jenkins > Plugins > Available Plugins 에서 Slack Notification을 검색하여 설치합니다.

3. Jenkins Slack 설정

Credential 등록

  1. Manage Jenkins > System > Slack 섹션으로 이동합니다.
  2. Credential 옆 + Add > Jenkins 클릭합니다.
  3. 아래와 같이 입력합니다.
항목
KindSecret text
SecretSlack에서 확인한 통합 토큰
ID식별 가능한 이름 (예: slack-token)

Slack 설정 입력

항목설정값
Workspace팀 하위 도메인
Credential위에서 등록한 Credential 선택
Default channel / member id#채널명 (알림을 보낼 채널)

연결 테스트

Test Connection 버튼을 클릭합니다. 성공하면 지정한 Slack 채널에 테스트 알림 메시지가 도착합니다.

4. Jenkinsfile에 Slack 알림 스크립트 추가

파이프라인의 post 블록에서 빌드 결과에 따라 Slack 알림을 전송합니다.

GROOVY
pipeline {
    agent any

    tools {
        jdk 'OpenJDK17'
    }

    stages {
        stage('Build') {
            steps {
                sh 'mvn clean package -DskipTests'
            }
        }
    }

    post {
        success {
            slackSend(
                channel: '#빌드알림',
                color: '#36A64F',
                message: """*빌드 성공*
Job: ${env.JOB_NAME} [#${env.BUILD_NUMBER}]
Branch: ${env.BRANCH_NAME ?: 'N/A'}
소요 시간: ${currentBuild.durationString}
<${env.BUILD_URL}|빌드 상세 보기>"""
            )
        }
        failure {
            slackSend(
                channel: '#빌드알림',
                color: '#FF0000',
                message: """*빌드 실패*
Job: ${env.JOB_NAME} [#${env.BUILD_NUMBER}]
Branch: ${env.BRANCH_NAME ?: 'N/A'}
<${env.BUILD_URL}console|콘솔 로그 확인>"""
            )
        }
    }
}

slackSend 주요 파라미터

파라미터설명예시
channel알림 대상 채널'#빌드알림'
color메시지 색상 (Hex)'#36A64F' (녹색), '#FF0000' (빨간색)
message알림 메시지 내용Slack 마크다운 지원
tokenCredentialIdCredential ID (글로벌 설정 시 생략 가능)'slack-token'

팁: ${env.BUILD_URL}을 활용하면 Slack 알림에서 바로 Jenkins 빌드 페이지로 이동할 수 있는 링크를 제공할 수 있습니다. 빌드 실패 시 빠른 원인 파악에 유용합니다.

트러블슈팅

증상원인해결 방법
Test Connection 실패토큰 오류 또는 네트워크 차단Slack 토큰 재확인, Jenkins 서버에서 Slack API 접근 가능 여부 확인
알림이 도착하지 않음채널명 오류 또는 Jenkins CI 앱이 채널에 미초대#채널명 형식 확인, Slack 채널에 Jenkins CI 앱 초대
빌드는 성공하지만 Slack 전송 실패slackSend 파라미터 오류Jenkins 빌드 콘솔 로그에서 Slack 관련 에러 메시지 확인

주의할 점

Jenkins CI 앱 채널 미초대

Slack 채널에 Jenkins CI 앱을 초대하지 않으면 알림이 전송되지 않습니다. 채널 설정에서 앱을 초대하거나, /invite @Jenkins CI 명령어를 사용합니다.

채널명 형식

slackSendchannel 파라미터에는 반드시 # 접두사를 포함해야 합니다. 빌드알림이 아니라 #빌드알림으로 지정합니다.


정리

항목설명
Slack 앱 추가Slack에서 Jenkins CI 앱 검색 → 추가
Jenkins 플러그인Slack Notification 플러그인 설치
CredentialSecret text 타입으로 통합 토큰 등록
파이프라인post 블록에서 slackSend() 호출
채널명 형식#채널명 (# 접두사 필수)
댓글 로딩 중...