Dazzling 개발 노트

[CI/CD] 6. Jenkins - Slack 연동해서 실시간으로 build 알림 받기 본문

DevOps/CICD

[CI/CD] 6. Jenkins - Slack 연동해서 실시간으로 build 알림 받기

dj._.dazzling 2023. 12. 22. 22:23

 

Slack은 모니터링을 위해 아주 간편하고 유용한 도구이다.

Jenkins와 Slack을 연동해 build 성공/실패를 알리는 알림을 설정해 보겠다.

 

사실 지난 게시글을 연결해서 보았다면 중간중간에 slack  설정을 이미 많이 보았을 것이다.

이 게시글에서는 slack이 연동된 부분을 집중해서 설명하면서 연동 방법을 다루도록 하겠다.

 

1. Slack 워크스페이스에 Slack 앱 추가

Access Key를 발급받는 방법을 다루는 게시글에서 언급한 내용이지만 한 번 더 설명한다.

Slack workspace에서 앱 > Jenkins 추가 > Jenkins 앱을 채널에 추가한다.

다음 화면의 3단계에서 표출되는 통합 토큰 자격 증명 ID를 복사하여 별도로 저장해 둔다.

 

Slack 워크스페이스가 없는 경우 생성 후 진행한다. 워크스페이스 생성 관련 내용은 이 게시글에서 다루지 않는다.

 

2. Jenkins > Jenkins 관리 > System > Slack

아래와 같이 입력한다.

- workspace : 워크스페이스명을 입력한다.

- credential : 위에서 저장해둔 slack token을 사용해 생성한 Credential 을 선택한다. (Credential 설정 방법)

- Default channel/ member id에 알림을 보낼 slack 워크스페이스의 채널명을 입력한다.

 

3. 연동 확인하기

위 설정에서 오른쪽 하단에 Test Connection 버튼을 클릭해 Jenkins와 Slack이 제대로 연동되었는지 확인한다.

 

정상적으로 연동되면 아래와 같은 테스트 메시지가 Slack으로 전송된 것을 확인할 수 있다.

 

4. Pipeline에서 Slack으로 알림 보내기

Script에서 알림을 보내고 싶은 부분에 slackSend 함수를 사용해서 Pipeline Script의 내용을 수정한다.

- channel : 메시지를 전달할 슬랙 채널

- message : 슬랙 채널에 전달할 메시지

            post {
                success {
                    slackSend (
                        channel: '#jenkins',
                        color: '#00FF00',
                        message: "SUCCESS: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]' (${env.BUILD_URL})"
                    )
                }
                failure {
                    slackSend (
                        channel: '#jenkins',
                        color: '#FF0000',
                        message: "FAIL: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]' (${env.BUILD_URL})"
                    )
                }
            }

 

알림이 잘 오는 것을 확인할 수 있다!

3시부터 9시까지 진행한 모습..^^;

 

 

참고

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