본문 바로가기
CI&CD

Github WebHooks 연동하여 Jenkins 빌드 자동화

by Night-Owl 2023. 1. 27.
728x90

Github Webhook를 이용해서 Github repository에 커밋이 발생하면 Jenkins에서 자동으로 빌드가 일어나도록 해보자.

1. Github Personal Access Token 생성

Github private repository 를 이용하고 있으므로 우선 Github Personal Access Token를 생성해야 한다.

프로필을 클릭 > Settings 클릭

 

그리고 왼쪽 탭 하단에 있는 Developer settings 클릭

 

1. Personal access tokens 클릭

2. Tokens(classic) 클릭

3. Generate new token 클릭

4. Generate new token (classic) 클릭

 

repoadmin:repo_hook 를 선택해 주고 Generate token 버튼 클릭

 

그러면 아래와 같이 토큰이 생성된다. 이제 해당 토큰을 복사버튼을 클릭해서 기억해 두자.

 

 

2. Jenkins Credentials 생성

이제 위에 생성한 Github Personal Access Token 를 Jenkins에 등록해 주자.

Jenkins 관리 클릭 > Manage Credentials 클릭

 

Domains밑에 있는 (global) 클릭

 

Add Credentials 버튼 클릭

 

Username은 Github ID를 적어주면 된다.

Password는 위에서 생성한 Github Personal Access Token 를 입력해 주면 된다.

ID는 Jenkins Credentials ID이다.

다 입력해 주고 Create 버튼을 클릭해 주면 된다.

 

 

3. Github Repository Webhook 생성

728x90

이제 Jenkins와 연동할 Github Repository에 들어가서 Webhook를 생성하자.

Settings 클릭 > Webhooks 클릭 > Add webhook 버튼 클릭

 

Payload URL에 젠킨스주소에 /github-webhook/ 를 추가해서 입력하면 된다.

Content type 은 _application/json_를 선택해 주고 Add webhook 버튼을 클릭하면 webhook이 생성된다.

 

만약에 Jenkins를 로컬에서 실행했다면 로컬환경을 인터넷으로 노출해줘야 한다.

ngrok를 이용하면 로컬에 구성한 환경을 외부에 공개할 수 있다.

 

 

Mac OS 기준으로 아래와 같이 할 수 있다.

1. ngrok 설치

 brew install ngrok/ngrok/ngrok

2. authtoken 추가

ngrok 사이트에서 로그인하면 authtoken를 준다. 해당 토큰을 설정에 추가해 주면 된다.

 ngrok config add-authtoken <token>

3. http 터널링

로컬 웹서비스가 8080 포트에 실행되고 있다면 다음과 같이 실행하면 된다.

ngrok http 8080

4. 아래와 같은 메시지를 확인할 수 있는데 Forwarding옆에 나와 있는 *.ngrok.ioURL를 Payload URL 에 젠킨스 주소로 입력해 주면 된다.

 

 

4. Github Repository 에 Pipeline script 추가

아래와 같은 Pipeline script를 Jenkinsfile로 Github repository에 추가하였다.

pipeline {
    agent any
    stages {
        stage('build') {
            steps {
                echo 'building the application...'
            }
        }
        stage('test') {
            steps {
                echo 'testing the application...'
            }
        }
        stage('deploy') {
            steps {
                echo 'deploying the application...'
            }
        }
    }
}

 

 

5. Jenkins pipeline 생성

 

GitHub project 클릭하고 Project url를 입력하자.

GitHub hook trigger for GITScm polling 클릭

 

 

Pipeline script를 Github repository에 생성하였으므로 Definition에서 Pipeline script from SCM를 선택하자.

SCM은 GIT으로 선택하고

Repository URL를 입력하고 Credentials 위에 생성한 것을 선택하면 된다.

Branch Specifier 에서 ****job를 빌드할 브랜치를 선택하고

Github repository에 Pipeline script 가 있는 Path를 Script Path에 입력하면 된다.

 

 

저장 버튼을 누르고 해당 Github repository에 커밋을 발생시키면 Pipeline이 실행되는 것을 확인할 수 있다.

 

 

참고

728x90

'CI&CD' 카테고리의 다른 글

Jenkins Pipeline 개념 및 예제  (0) 2023.01.26
Install and Run Jenkins With Docker Compose  (0) 2023.01.25

댓글0