[Docker Container Jenkins - 2] 젠킨스(Jenkins)에 깃헙(Github) 연동하기

2019. 11. 28. 11:16Engineering/Container&Kubernetes

 Contents

1. Github token 설정
2. Github 연동할 Jenkins 프로젝트 생성
3. Github Webhook 설정
4. Github-Jenkins 연동 확인

 


 

 

Jenkins Github 레포지토리를 연동하여, Github 레포지토리에 변경된 코드가 push 마다 빌드를 수행하도록 설정합니다.


 

1. Github token 설정

Jenkins Github 연동을 위해서는 Jenkins Github API 사용할 있도록

  1) Github API token 생성하고

  2) 생성된 Github token Jenkins 등록

해줘야 합니다.

 

먼저 1) Github에서 API token 생성 봅시다.

우선 Github 접속합니다.

 

@Github

오른쪽 상단에 본인의 프로필 사진->Settings 메뉴에 진입합니다.

 

Settings 메뉴 가장 하단에 'Developer settings' 진입합니다.

 

Developer settings에서 'Personal access tokens' 메뉴 탭을 선택합니다.

여기서 'Generate new token' 버튼을 클릭합니다.

 

'Note' 토큰에 대한 설명을 기입하고,

'Select scopes' 에서 'repo', 'admin:repo_hook' 항목에 체크합니다.

 

맨 하단에 'Generate token' 버튼을 누르시면

생성된 토큰이 한번 노출 것입니다.

페이지를 벗어나면 토큰이 사라지므로, 따로 복사해 두시기 바랍니다.

 

이제 2) 생성된 Github token Jenkins 등록 하겠습니다.

 

우선 Jenkins 웹에 접속 합니다.

 

@Jenkins

로그인 화면 좌측의 'Jenkins 관리-> 시스템설정' 진입합니다.


시스템설정
화면에서 'Github' 설정 란으로 이동합니다. 

'Add Github Server' 버튼을 클릭하셔서 아래와 같이 항목들을 채워 줍니다.

 - Name : [원하는 이름]

 - API URL : https://api.github.com

 - Credential 부분에서 'Add->jenkins' 버튼을 눌러 Github 토큰을 등록해야 합니다.

 

'Credentials->Add->jenkins' 버튼을 누르면 아래와 같은 화면이 보이며, 다음과 같이 항목들을 채워 줍니다.

 - Domain : Global credential (그대로 둡니다.)

 - Kind : 'Secret text'

 - Secret : [복사해둔 Github 토큰]

 - ID : Github 사용자 이름 (email 주소 아님)

 

'Add' 버튼을 눌러 최종적으로 Github 토큰을 등록 합니다.

 

방금 생성한 토큰을 credential 항목에서 선택하여 줍니다.

그리고 'Test connection' 버튼을 눌러서 Github API Jenkins에서 정상적으로 동작하는지 확인합니다.

'Credentials verified' 문구가 나와야 정상적으로 연결이 것입니다.

 

마지막으로 가장 하단에 '저장'버튼을 눌러 Jenkins Github 토큰 등록 설정을 저장하고 마무리 합니다.

 

 

2. Github 연동할 Jenkins 프로젝트 생성

이제 Github 연동하여 빌드 자동화를 구성할 Jenkins 프로젝트를 생성해보도록 하겠습니다.

 

@ Jenkins

Jenkins 화면 왼쪽 메뉴 탭에서 '새로운 Item' 선택 합니다.

 

생성할 프로젝트의 이름을 'Enter an item name' 입력 하고,

이름 입력 아래에서 원하는 프로젝트 타입을 선택 합니다.

글에서는 'Freestyle project' 생성해 보도록 하겠습니다.

프로젝트 타입까지 선택하셨으면 'OK' 버튼을 클릭합니다.

 

다음으로는 프로젝트 환경 설정 화면이 보여집니다.

가장 상단에 보이는 General 설정은 넘어가시고,

'소스코드 관리' 부분으로 이동합니다.

 

 

'소스코드 관리' 부분에서 'Git' 체크 하여 주시면,

'Git' 설정 창이 드롭다운 되며 각 항목 값을 아래와 같이 입력합니다.

 - Repository URL : [본인 레포지토리 URL]

 - Credentials : Github 계정 로그인 정보를 등록하여 선택해야 합니다.

따라서 'Credentials->Add->jenkins' 선택합니다.

 

각 항목 값을 아래와 같이 입력 합니다. 

 - Domain : Global credentials (그대로 두기)

 - Kind : Username with password

 - Username : Github ID (email 형식으로)

 - Password : Github 비번

'Add' 버튼을 눌러 Github 로그인 정보 등록을 마무리 하시고, 등록한 Github 로그인 정보를 Git의 Credential란에서 선택합니다.

 

다음으로 '빌드 유발' 설정 란으로 이동합니다.

설정은 '언제' 빌드를 하느냐를 설정하는 부분입니다.

여기서는 'Github hook trigger for GitScm polling' 체크하여

Github Webhook 동작할 때마다 빌드를 유발하도록 설정합니다. 
(Github Webhook
설정은 3장에서 설명하겠습니다.)

 

마지막으로 'Build' 설정 란으로 이동합니다.

설정은 '어떻게' 빌드를 수행 하느냐를 설정하는 부분입니다.

본인의 환경에 맞게 빌드 방법을 선택하시면 됩니다.

 

글에서는 'Execute shell' 선택하여,

빌드를 수행할 shell 명령을 직접 작성해 주겠습니다.

 

글에서는 helloworld.java라는 간단한 java 소스가 저장되어있는 Github 레포지토리를 사용하고 있으므로,

해당 java 소스를 javac 통해 컴파일 하는 명령어를 입력하였습니다.

 

 

여기까지 입력 하셨으면 최종적으로 프로젝트 설정을 '저장' 합니다.

 

 

Jenkins 홈으로 돌아와 보시면,

방금 생성한 프로젝트가 조회되는 것을 확인할 있습니다.

 

3. Github Webhook 설정

2장에서 Jenkins 프로젝트의 빌드 트리거 설정을 'Github Webhook 발생시' 설정 하였습니다.

그렇다면 Github에서 Jenkins 서버에게 Webhook 발생하도록 설정해 주어야겠죠.

설정을 위해서 다시 Github으로 돌아 옵니다.

 

@Github

Github에서 Jenkins 연동 시킬 레포지토리로 이동합니다.

레포지토리에서 'Settings' 메뉴를 선택 합니다.

'Settings' 화면 좌측의 메뉴 탭에서 'Webhooks' 선택합니다.

'Add webhook' 버튼을 눌러 새로운 webhook 추가할 있습니다.

 

'Add webhook' 버튼을 누르면 아래 사진과 같은 webhook 설정 화면이 보여집니다.

항목 값을 아래와 같이 추가합니다.

 - Payload URL : http://{jenkinsIP:PORT}/github-webhook/

 - Contents type : application/json

 - 'Just the push event' 체크
   (
해당 레포지토리에 push 있을 webhook 작동하도록 합니다.
   최종적으로 '레포지토리 push->webhook작동->jenkins 빌드 트리거' 같은 순으로 github jenkins 연동 됩니다.)

 

마지막으로 'Add  webhook' 눌러 Webhook 추가를 마무리 합니다.

 

정상적으로 webhook 추가 됐으면 아래 그림과 같이

동된 jenkins URL 좌측에 초록색 체크 표시가 노출 됩니다.

 

여기까지 문제없이 따라오셨다면, 모든 설정을 완료하신 겁니다 !

이제 다음 장에서 실제 동작을 확인해보도록 하겠습니다.

 

 

4. Github-Jenkins 연동 확인

글에서는 아래와 같이 helloworld.java 코드가 저장된 Github 레포지토리를 사용 합니다.

publlic class helloworld {
	public static void main(String[] args){
    	System.out.println("Hello World~~~!!!");
    }
}

 

 

이제, helloworld.java 코드를 "Hello World~~~!!" 아닌

"Hello World!!" 출력되도록 수정한 다음 git push 봅시다.

 

Push 하고, 바로 Jenkins 접속해 보시면 빌드가 진행되는 상태를 확인할 있습니다.

왼쪽 하단 '빌드 대기 목록' 'test' 프로젝트가 추가 되고,

빌드가 완료되면 '빌드 대기 목록'에서 사라집니다.

 

빌드가 성공적으로 완료되면, 프로젝트 목록에서 Status 나타내는 가장 왼쪽 'S' 열에 '파란색' 구가 보여 집니다.

(빌드 실패 '빨간색' 표시)

 

 

그렇다면 빌드 파일이 정상적으로 생성되었는지 확인해 봅시다.

프로젝트 목록에서 프로젝트 이름을 선택하여 해당 프로젝트로 진입합니다.

그리고 '작업 공간' 으로 진입합니다.

 

 

'작업 공간' 해당 프로젝트에서 사용하는 소스코드 빌드 파일

작업에 필요한 모든 파일들을 조회할 있는 공간 입니다.

 

따라서 빌드가 정상적으로 실행 되면, 빌드 결과 파일을 '작업 공간'에서 확인할 있습니다.

 

 

글에서는 helloworld 클래스를 구현한 helloworld.java 코드를  빌드 하여,

helloworld.class 빌드 결과로 생성된 것을 확인할 있습니다.