이번 포스팅에서는 젠킨스 빌드 스테이지를 가시화하여 볼 수 있도록 설정하고, 빌드 성공유무를 Slack 채널 알림으로 받아볼 수 있도록 설정해보도록 하겠습니다.
Manage Jenkins -> Manage Plugins -> Available
로 이동합니다.Pipeline Stage View Plugin
을 검색하여 설치합니다. 이 플러그인은 파이프라인의 각 스테이지에 대한 실행 시간을 시각적으로 보여줍니다. Pipeline
섹션 아래에서 시각적인 뷰를 확인할 수 있습니다.Jenkins의 관리 페이지로 이동합니다.
Jenkins 관리
-> Manage Plugins
로 이동합니다.
Available
탭에서 Slack Notification Plugin
을 검색하여 설치합니다.
설치가 완료되면 Jenkins를 재시작합니다.
Slack 워크스페이스에서 앱 디렉토리로 이동합니다 (https://slack.com/apps).
Jenkins CI
앱을 검색하고 추가합니다.
Jenkins CI 앱을 추가한 후, 연동할 채널을 선택합니다.
설정 후, Slack에서 Jenkins에 사용할 Incoming Webhook URL
을 생성합니다. 이 URL은 Jenkins가 Slack으로 메시지를 보낼 때 사용됩니다.
Jenkins 관리 페이지에서 Jenkins 관리
-> Configure System
으로 이동합니다.
페이지 하단으로 스크롤하여 Slack
섹션을 찾습니다.
다음과 같은 정보를 입력합니다:
Workspace: Slack 워크스페이스 이름을 입력합니다.
Credential: Incoming Webhook URL
을 설정할 때 생성된 토큰을 입력합니다.
Default Channel / Channel: 기본적으로 메시지를 보낼 Slack 채널을 설정합니다 (예: #general
).
Integration Token Credential ID: Slack에 설정한 토큰을 Jenkins의 Global Credentials로 추가(global > Secret text
)하고, 해당 Credential ID를 여기 입력합니다.
설정을 저장합니다.
이제 이전 포스팅에서 작성한 Jenkins Pipeline에서 특정 이벤트에 Slack 알림을 추가할 수 있습니다. 다음과 같이 빌드 성공 및 실패 시 알림을 보내는 파이프라인을 추가합니다.
pipeline {
agent any
environment {
DOCKERHUB_CREDENTIALS = '직전에 만든 dockerhub 식별 ID'
REPO_URL = 'https://github.com/your-repository.git'
IMAGE_NAME = 'your-dockerhub-username/repository-name'
SLACK_CHANNEL = '#알림가길원하는slack채널'
SLACK_CREDENTIALS_ID = 'CREDENTIALS등록한ID'
}
stages {
stage('Checkout') {
steps {
git url: "${env.REPO_URL}", branch: 'your-branch', credentialsId: '직전에 만든 github-accesskey 식별 ID'
}
}
stage('Build Gradle') {
steps {
dir('your-gradlew-folder') {
sh './gradlew build -x test'
}
}
}
stage('Build Docker Image') {
steps {
script {
def image = docker.build("${env.IMAGE_NAME}:${env.BUILD_NUMBER}", "-f path/to/Dockerfile .")
docker.withRegistry('', "${env.DOCKERHUB_CREDENTIALS}") {
image.push()
}
sh """
docker images --filter=reference='${env.IMAGE_NAME}*' --format '{{.ID}}' | tail -n +4 | xargs -r docker rmi -f
"""
}
}
}
stage('Deploy to Server') {
steps {
script {
sh "docker pull ${env.IMAGE_NAME}:${env.BUILD_NUMBER}"
sh "docker stop app-container || true"
sh "docker rm app-container || true"
sh "docker run -d --name app-container -p 8084:8084 ${env.IMAGE_NAME}:${env.BUILD_NUMBER}"
}
}
}
}
post {
success {
slackSend(channel: env.SLACK_CHANNEL, color: 'good', message: "Build Successful: ${env.JOB_NAME} [${env.BUILD_NUMBER}] (<${env.BUILD_URL}|Open>)")
}
failure {
slackSend(channel: env.SLACK_CHANNEL, color: 'danger', message: "Build Failed: ${env.JOB_NAME} [${env.BUILD_NUMBER}] (<${env.BUILD_URL}|Open>)")
}
}
}
지금까지 완료하셨다면, Jenkins 기본 설정 및 가시화 그리고 Slack 연동까지 완료했습니다. 다음 포스팅에서는 SSL 인증서를 적용시켜 HTTPS 통신을 하도록 해보겠습니다.