Jenkins Mattermost 채널 알림 연동하기

2.5*2 하빈·2024년 5월 28일
9
post-thumbnail

CI/CD 구축을 했는데... 이게 잘 되는건지... 안되는건지...

직접 접속해서 확인하는 것은 너무 비효율적이지 않을까...? 라는 고민을 했습니다.

이때, 현업에 계시는 분들은 어떻게 할까?를 찾아보게 되었고!!

내부 메신저에 연동해서 빌드 결과를 확인한다는 것을 보았습니다.

네! 그래서 저도 해보겠습니다.

채널 알림 연동ㅎㅎ

레츠고우~!@#!@!@!~!~!레츠고우~!@#!@!@!~!~!레츠고우~!@#!@!@!~!~!


1 - Mattermost 채널 생성

  • 우선 빌드를 알려줄 채널을 생성할까요?


  • 채널 설정은 자유롭게 해주시면 됩니다.


2 - Mattermost Incoing Webhook 추가

  • 메타모스트 좌측 상단 네모 > 통합 눌러주시고~


  • 전체 Incoing Webhook > Incoing Webhook 추가하기 > 저장



제목 : 임의의 제목 (Jenkins_Build_Result)
설명 : 설명 (Jenkins_Build_Result)
채널 : 메세지를 받을 채널 선택 (Jenkins_Build_Result)


  • 저장하고 나오는 URL 저장을 해두세요!


3 - Jenkins Plugins Down

  • Jenkins로 이동해주시고요! Mattermost Plugin 다운 받아주세요!
    Dashboard > Jenkins 관리 > Plugins > Mattermost Notification Plugin Install

  • 저는 이미 다운 받아서 없어요!


3-1

  • 메타모스트 채널 EndPoint 등록 및 Jenkins Server URL 등록합니다.
    Dashboard > Jenkins 관리 > System > Global Mattermost Notifier Settings

Endpoint : 메타모스트에서 발급 받은 URL (https://meeting.example.com/hooks/머시기머시기)
Channel : Incoming Webhook을 추가할 때 설정했던 채널 이름
(Jenkins_Build_Result)
Icon to use : 비워도 된다.
Build Server URL : Jenkins 주소 (자동 입력된다,)

  • Test Connection 으로 연결 확인합니다!


4 - pipline 수정

  • 이제 설정을 완료했으니 pipline 수정하러 가볼까요?

Pipeline 모든 과정이 끝나고 맨 아래 줄에 추가해주시면 됩니다!
endpoint, channel 부분에는 설정하신 값으로 바꿔주세요!

stage('Notification') {
    steps{
        echo 'jenkins notification!'
    }
    post {
        success {
            script {
                def Author_ID = sh(script: "git show -s --pretty=%an", returnStdout: true).trim()
                def Author_Name = sh(script: "git show -s --pretty=%ae", returnStdout: true).trim()
                mattermostSend(color: 'good',
                    message: "빌드 성공: ${env.JOB_NAME} #${env.BUILD_NUMBER} by ${Author_ID}(${Author_Name})\n(<${env.BUILD_URL}|Details>)",
                    endpoint: '메타모스트에서 발급 받은 URL',
                    channel: 'Jenkins_Build_Result'
                        )
            }
        }
        failure {
            script {
                def Author_ID = sh(script: "git show -s --pretty=%an", returnStdout: true).trim()
                def Author_Name = sh(script: "git show -s --pretty=%ae", returnStdout: true).trim()
                mattermostSend(color: 'danger',
                    message: "빌드 실패: ${env.JOB_NAME} #${env.BUILD_NUMBER} by ${Author_ID}(${Author_Name})\n(<${env.BUILD_URL}|Details>)",
                    endpoint: '메타모스트에서 발급 받은 URL',
                    channel: 'Jenkins_Build_Result'
                        )
            }
        }
    }
}

5 - 결과 확인

와우!

이제 Jenkins pipline 과정이 끝나면 정상적으로 빌드가 된다면

아래와 같이 뜨네요!!!


이제 채널 알림 연동해서 편리하게 빌드가 되었는지 확인이 가능합니다.

대박!

나이스!

CI/CD 자동화 과정은
직접 모든 것을 수동으로 하다보면
"이 과정을 더 편리하게 자동으로 할 수는 없을까?" 라는
의문으로 시작되는 것 같습니다!

저도 나중에는 자동화 Tool을 만들어서 개발자들에게 편리한 개발 환경을 제공해보고 싶은데요!

언젠가.. 할 수 있겠죠? 노력해보겠습니다.. 아자아자 !!

여러분들도 화이팅입니다!

profile
끝내주는 남자

0개의 댓글