Dazzling 개발 노트

[CI/CD] 3. Jenkins 프로젝트 생성 및 설정하기 & GitHub Webhooks 설정하기 본문

DevOps/CICD

[CI/CD] 3. Jenkins 프로젝트 생성 및 설정하기 & GitHub Webhooks 설정하기

dj._.dazzling 2023. 12. 22. 21:16

Jenkins - GitHub - Docker 연동을 위해 Jenkins 프로젝트를 생성한다.

 

Jenkins 프로젝트 생성 및 설정하기

새로운 item을 클릭하여 다음과 같은 페이지로 이동,

프로젝트 이름을 작성 후 pipeline을 선택, OK를 클릭한다.

GitHub project 옵션 선택

GitHub project를 체크하고 repository url을 입력한다.

이 옵션을 통해 Jenkins와 GitHub 프로젝트가 연동된다.

 

GitHub hook trigger for GITScm polling 옵션 선택

github hook trigger for GITScm polling을 체크한다.

이 옵션을 통해 GitHub에서 push 이벤트가 발생되면 Webhook을 날려 Jenkins가 받아 요청을 처리한다.

Pipeline Script 작성

Pipeline 옵션에서 script를 작성한다.

pipeline script는 Jenkins 서버에서 직접 설정할 수도 있고

프로젝트 내의 Jenkinsfile에서 별도로 관리할 수도 있다.

 

이번 게시글에서는 간단하게 파이프라인을 구현하기 위해

Jenkins 서버에서 직접 script를 작성했다.

현재 코드는 단지 GitHub를 연결하고, 단순 메시지만 표출하는 코드이다.

 

파이프라인 Script에 대한 자세한 내용은 다음 게시글에서 설명한다.

pipeline {
    agent any
    stages {
        stage('Checkout') {
            steps {
                echo 'Checkout the application...'
                git branch: 'main',
                    credentialsId: 'github_access_token',
                    url: 'https://github.com/allrightDJ0108/DJ-First-ToyProject.git'
            }
        }
        stage('build') {
            steps {
                echo 'building the application...'
            }
        }
        stage('test') {
            steps {
                echo 'testing the application...'
            }
        }
        stage('deploy') {
            steps {
                echo 'deploying the application...'
            }
            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})"
                    )
                }
            }
        }
    }
}

 

저장 버튼을 클릭해 Jenkins 프로젝트 설정을 마무리한다.

프로젝트가 정상적으로 생성되었다.

 

'지금 빌드'를 클릭 해 수동으로 빌드를 할 수 있다.

 

수동으로 진행한 빌드가 정상적으로 진행되었다.

 

 

GitHub에서 Webhooks 설정하기

GitHub에서 Push 이벤트 발생 시 Jenkins로 Webhook 요청을 보내기 위해 설정을 진행한다.

 

GitHub > Repository > Settings > Webhooks

기존에 생성한 webhook이 있지만 다시 생성한다.

 

Add webhook 버튼 클릭

Payload URL에 Jenkins 서버의 ip:port 주소에 /github-webhook/ 을 입력한다.

/github-webhook/의 뒤에 있는 /를 입력하지 않으면 302 오류가 발생하니 반드시 제대로 입력한다.

 

Content type은 application/json으로 입력한다.

 

webhook 이 생성되었다.

 

클릭하여 Recent Deliveries 탭으로 이동하면 hook의 내용을 상세하게 볼 수 있다.

처음 생성 시 ping을 날려 제대로 생성되었는지 확인한다.

초록색 체크 표시가 되어 있으면 정상적으로 Jenkins와  GitHub가 연결된 것이다.

 

GitHub Webhook을 통한 Jenkins Build Test 

 

이번에는 프로젝트에서 소스코드를 수정하고 push해 자동으로 빌드를 수행하도록 한다.

 

 

자동으로 빌드가 진행되었다!

 

로그를 확인할 수도 있다.

 

 

GitHub Webhook의 최근 요청 목록에서도 확인할 수 있다.

push라고 표시된 요청이 소스코드를 push하면서 실행된 요청이다.

 

정상적으로 처리되면 webhook의 Response에 200 코드가 표출된다.