반응형

사내 시스템에서 빌드 결과를 알림 받는 방법을 소개한다. 사내 시스템에서는 보안 때문에 텔레그렘, 디스코드 관련된 플러그인을 쓰지 못 할 것이다. 따라서, 다른 방법을 써야하는데 그 방법들을 소개한다.

 

1. 웹 브라우저 데스크탑 팝업

외부 서버로 데이터를 보내지 않고, 본인의 PC 브라우저가 Jenkins 상태를 감시하다가 알림을 띄우는 방식이다. 보안상 가장 안전하며 설정이 간단하다.

  • 방법: 크롬(Chrome)이나 엣지(Edge) 확장 프로그램 중 Jenkins Notifier 류를 설치한다.
  • 작동 원리: 브라우저가 정해진 주기마다 Jenkins API를 호출하여 상태 변화가 생기면 윈도우/맥 시스템 알림 창을 띄운다.
  • 장점: 사내 망 외부로 어떠한 데이터도 나가지 않으며, 본인만 조용히 알림을 받을 수 있다.

 

2. HTTP Request Plugin

HTTP Request Plugin을 사용하여 알림을 보내는 방법이다. 사내 메신저나 자체 대시보드 서버가 Webhook API를 지원한다면 이 방식으로 데이터를 던질 수 있다.

아래는 구체적인 설정 단계와 파이프라인 코드 예시이다.

 

1. 플러그인 설치

먼저 Jenkins 관리자 권한으로 아래 플러그인을 설치해야 한다.

Jenkins 관리 > Plugins > Available plugins

"HTTP Request" 검색 후 설치 (재시작 필요 없음)

 

2. 파이프라인(Pipeline) 작성법

Jenkinsfile의 post 섹션에 작성하여 빌드 결과에 따라 전송하도록 설정하는 것이 일반적이다.

pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                echo 'Building...'
            }
        }
    }
    post {
        // 빌드가 성공했을 때만 실행
        success {
            httpRequest httpMode: 'POST', 
                        contentType: 'APPLICATION_JSON',
                        url: 'https://your-webhook-url.com/api/notify',
                        requestBody: """
                        {
                            "project": "${env.JOB_NAME}",
                            "buildNumber": "${env.BUILD_NUMBER}",
                            "status": "SUCCESS",
                            "url": "${env.BUILD_URL}"
                        }
                        """
        }
        // 빌드가 실패했을 때 실행
        failure {
            httpRequest httpMode: 'POST', 
                        contentType: 'APPLICATION_JSON',
                        url: 'https://your-webhook-url.com/api/notify',
                        requestBody: """
                        {
                            "project": "${env.JOB_NAME}",
                            "status": "FAILED",
                            "reason": "Check the logs at ${env.BUILD_URL}"
                        }
                        """
        }
    }
}

 

3. 주요 파라미터 설명

- httpMode: 보통 POST를 사용한다

- contentType: API 서버가 요구하는 형식(주로 APPLICATION_JSON)을 지정한다.

- requestBody: 보낼 데이터 내용이다. 위 예시처럼 ${env.JOB_NAME} 같은 Jenkins 환경 변수를 활용하면 어떤 프로젝트에서 문제가 생겼는지 정확히 전달할 수 있다.

- authentication: 만약 API 서버가 인증을 요구한다면, Jenkins Credentials에 등록된 ID/PW를 연결할 수 있다. (authentication: 'my-api-token')

 

 

반응형