DevOps/CI-CD

[Jenkins] Jenkins Pipeline 슬랙 연동 (with. 선언형, 스크립트형)

yubi5050 2023. 8. 31. 00:04

Jenkins Pipeline Slack Notification 연동 방법

1. Slack에서 Jenkins 앱을 추가로 설치한다.

2. Slack에서 Jenkins Pipeline에 대한 결과 notification을 수신할 채널을 생성한다. (#jenkins_cicd)

 

아래 3~5 부터는 다음 링크 참조하면 좋음

3. Slack에서 해당 워크 스페이스에 대한 이름과, Integreation Token Credential ID를 확인 한다.

4. Jenkins에서 Slack Notification Plugin을 설치한다.

5. Jenkins System에서 슬랙 관련 정보를 등록한다.

5.1 Workspace : Team Subdomain 값

5.2 Credential : 신규 생성

- kind : secret text

- secret : 슬랙 해당 워크스페이스의 Integreation Token Credential ID

- id : 임의 작성

- description : 임의 작성

5.3 Default channel / member id : #jenkins_cicd

6. 파이프라인에서 문법에 맞게 작성 한다

 

선언형 (Declarative) 작성 방법

기본적으로 선언형(Declarative) 방법은 pipeline 안에 post -> success / failure -> slackSend 순으로 작성 된다.

stages가 모두 끝나면 pipeline의 success or failure 상태에 따라 슬랙을 보내게 된다.

pipeline {
    agent any
    stages {
        stage('Clone repository'){
            ...
        }
    }
    post {
        success {
            slackSend (
                channel: '#jenkins_cicd', 
                color: '#00FF00', 
                message: "SUCCESS: Job ${env.JOB_NAME} [${env.BUILD_NUMBER}]"
            )
        }
        failure {
            slackSend (
                channel: '#jenkins_cicd', 
                color: '#FF0000', 
                message: "FAIL: Job ${env.JOB_NAME} [${env.BUILD_NUMBER}]"
            )
        }
    }
}

 

스크립트형 (Scripted) 작성 방법

기본적으로 스크립트형(Scripted) 방법은 node 안에 try-catch -> slackSend 순으로 작성 된다.

코드 로직 처럼 단순히 특정 stage가 성공 여부에 따른 (pipeline 실패시 catch 발생) try-catch 구문으로 작성 한다.

당연히 stage를 여러개를 try 안에 넣으면 여러 stage 성공 여부나, 각각에 대한 try-catch 처리 등도 가능하다.

node{
    try{
        stage('Build image'){
            sh """
            echo 이미지 빌드
            """            
        }
        slackSend (
            channel: '#jenkins_cicd', 
            color: '#00FF00', 
            message: "SUCCESS: Job ${env.JOB_NAME} [${env.BUILD_NUMBER}]"
        )
    }
    catch(error){
        slackSend (
            channel: '#jenkins_cicd', 
            color: '#FF0000', 
            message: "FAIL: Job ${env.JOB_NAME} [${env.BUILD_NUMBER}]"
        )
    }
}

 

참고 링크

슬랙-젠킨스 연동 관련 상세 내용이 나와있다.

- https://junhyunny.github.io/information/jenkins/jenkins-slack-notification/

 

알림 내용 구성 간 젠킨스 기본 env 확인이 가능하다. (ex. Job에 대한 URL이나, Jenkins URL 등)

- https://velog.io/@revelation/Jenkins-환경변수