Jenkins

[Jenkins] Jenkins 빌드 상태를 Slack으로 자동 알림 보내기

J_Dev 2024. 12. 19. 17:22

1. 서론

  • 이번 포스트에서는 Slack과 Jenkins를 연동하여 파이프라인에서 Slack으로 메시지를 보내는 방법을 알아보겠습니다.

2. Slack에서 Jenkins 앱 설치

  1. Slack 에서 더보기-> 앱 으로 이동합니다.
  2. 검색창에 Jenkins 입력하고 검색합니다.
  3. Jenkins 앱을 다운로드합니다.

3. Jenkins 설정

1) 플러그인 설치

  • Jenkins에서 Slack Notification 플러그인을 설치합니다.

2) Credentials 추가

  1. Jenkins의 Credentials 설정 화면으로 이동합니다.
  2. 다음과 같이 설정합니다.
    • Domain : Global Credentials
    • kind : Secret Text
    • Secret : Slack 구성 편집에서 생성한 토큰을 입력

3)Slack 채널 추가

  1. Jenkins 관리 > System 메뉴로 이동합니다.
  2. Slack 설정 섹션에서 아래 항목을 입력합니다:
    • Workspace: Slack 워크스페이스의 하위 도메인을 입력합니다.
    • Credential : 위에서만든 Credential을 선택합니다.

4. 파이프라인 구축

1) 코드 작성

  • 아래는 Slack에 빌드 상태를 알리는 Jenkins Pipeline 코드 예제입니다
  • alwyas : 성공여부와 상관없이 항상 발행되는 메시지입니다.
  • success : 빌드성공시 발행되는 메시지입니다,
  • failure : 빌드실패시 발행되는 메시지입니다.
  post {
        always {
            echo 'Pipeline compoleted!'
            slackSend channel: '#netnovel', message: """
        📢 *Pipeline 완료*
        - *Job*: ${env.JOB_NAME}
        - *Build Number*: ${env.BUILD_NUMBER}
        - *결과*: ${currentBuild.currentResult}
        - *빌드 링크*: ${env.BUILD_URL}
        """

        }
        success {
            slackSend channel: '#netnovel', message: """
        ✅ *빌드 및 배포 성공!*
        - *Job*: ${env.JOB_NAME}
        - *Build Number*: ${env.BUILD_NUMBER}
        - *빌드 링크*: ${env.BUILD_URL}
        """

        }
        failure {
            slackSend channel: '#netnovel', message: """
        ❌ *빌드 실패!*
        - *Job*: ${env.JOB_NAME}
        - *Build Number*: ${env.BUILD_NUMBER}
        - *빌드 링크*: ${env.BUILD_URL}
        - *확인 후 문제 해결 필요!*
        """
        }

    }

5. 빌드 테스트

  • 위에서 작성한 파이프라인 코드를 사용해 빌드를 실행합니다.
  • Slack 채널에서 결과 메시지가 정상적으로 전달되는지 확인합니다.

6. 결론

  • 이번 포스트에서는 Jenkins와 Slack을 연동하여 빌드 상태를 Slack 채널로 전송하는 방법을 알아보았습니다.
  • 이를 통해 파이프라인 결과를 실시간으로 모니터링할 수 있습니다.
  • 추가적인 설정이나 확장이 필요한 경우 공식 문서를 참조해주세요!