Slack 연동 및 알림 설정
Jenkins 빌드가 실패했는데 아무도 몰라서 반나절이 지나간 경험이 있다면, 빌드 알림 자동화가 필요합니다.
Jenkins-Slack 연동 은 빌드 결과(성공/실패)를 실시간으로 팀 채널에 자동 전송하여, 빌드 실패를 즉시 인지하고 빠르게 대응할 수 있게 합니다.
코드 Push → Jenkins 빌드 실행 → 빌드 결과(성공/실패) → Slack 채널에 알림 전송
1. Slack에 Jenkins CI 앱 추가
- Slack에서 더보기 > ** 앱** 으로 이동합니다.
- Jenkins CI 를 검색하여 추가합니다.
- 앱 추가 후 설정 지침 페이지에서 아래 값을 확인합니다.
| 항목 | 설명 | 사용 위치 |
|---|---|---|
| 팀 하위 도메인 (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 등록
- Manage Jenkins > System > Slack 섹션으로 이동합니다.
- Credential 옆 + Add > Jenkins 클릭합니다.
- 아래와 같이 입력합니다.
| 항목 | 값 |
|---|---|
| Kind | Secret text |
| Secret | Slack에서 확인한 통합 토큰 |
| ID | 식별 가능한 이름 (예: slack-token) |
Slack 설정 입력
| 항목 | 설정값 |
|---|---|
| Workspace | 팀 하위 도메인 |
| Credential | 위에서 등록한 Credential 선택 |
| Default channel / member id | #채널명 (알림을 보낼 채널) |
연결 테스트
Test Connection 버튼을 클릭합니다. 성공하면 지정한 Slack 채널에 테스트 알림 메시지가 도착합니다.
4. Jenkinsfile에 Slack 알림 스크립트 추가
파이프라인의 post 블록에서 빌드 결과에 따라 Slack 알림을 전송합니다.
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 마크다운 지원 |
tokenCredentialId | Credential 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 명령어를 사용합니다.
채널명 형식
slackSend의 channel 파라미터에는 반드시 # 접두사를 포함해야 합니다. 빌드알림이 아니라 #빌드알림으로 지정합니다.
정리
| 항목 | 설명 |
|---|---|
| Slack 앱 추가 | Slack에서 Jenkins CI 앱 검색 → 추가 |
| Jenkins 플러그인 | Slack Notification 플러그인 설치 |
| Credential | Secret text 타입으로 통합 토큰 등록 |
| 파이프라인 | post 블록에서 slackSend() 호출 |
| 채널명 형식 | #채널명 (# 접두사 필수) |
댓글 로딩 중...