Simplify

GitHub 와 Jenkins 연동하기 (How to integrate GitHub and Jenkins) 본문

Other/Dev. Tips

GitHub 와 Jenkins 연동하기 (How to integrate GitHub and Jenkins)

Simplify - Jonghun 2019. 7. 4. 11:19

개발 환경에서 서버에서의 구동은 매우 중요한 부분입니다. 게다가 저 처럼 소규모로 개인 용도로 개발하는 경우에는 물론이고, 개발환경(개발서버)에서 배포를 통해 실제 운영 서버와 동일한 환경에서 개발 환경을 구축하고 테스트하는 것은 매우 중요한 부분입니다. 

 

이러한 점에서 자동 빌드, 배포 툴인 Jenkins 는 매우 중요한 역할을 하고 있습니다. Jenkins 의 여러가지 다양한 기능들도 있겠지만, 기본적으로 어떤 Repository(SVN, Git 등)에서 최신 소스코드를 다운로드 받아 빌드하는 역할을 합니다. Jeknins 의 다양한 기능들은 보통 plug-in 형태로 제공되며, 이를 통해 무궁무진하게 다양한 기능들을 수행할 수 있습니다. 

 

여기서는,

  1. GitHub에서 최신 소스코드를 다운로드 받아(git pull)
  2. 빌드하고(maven)
  3. docker container에 배포

하는 과정까지 설명합니다. 물론 여기서는 docker 빌드에 대해서는 설명하지 않고, 제 환경처럼 외부 repository (volume) 을 연결해 놓은 곳에 가져다 두고 docker compose를 재 시작하는 과정으로 설명합니다. (빌드에 대한 부분은 추후 제가 필요해 지만 그때 학습하면서 또 포스팅 하겠습니다)

 

 

GitHub에서 외부 접근이 가능하도록 설정하기

 

소제목이 조금 이상하게 되긴 했지만, 외부 접근은 ID/Password 를 이용한 방법 보다는, 아래 말씀드리는 것 처럼 암호키 설정으로 진행하는 것이 좋습니다. 이렇게 하면 해당 키를 없애는 것 만으로도 보안성을 유지할 수 있다는 장점이 있습니다. 

 

GitHub 홈페이지에 접속, 로그인하여 Settings 로 진입합니다. 그리고 좌측 메뉴에서 아래와 같이 Developer Settings 에 들어갑니다. 

 

그리고서 Personal access tokens 를 들어가서 Generate new token 버튼을 누릅니다. 저는 기존에 사용하는 token 이 있어 blur 처리 하였으나 아마 처음에는 아무것도 없을겁니다.

 

그리고 Note 에는 본인이 알아볼 수 있는 이름을 넣고, repo, admin:repo_hook 을 선택합니다. 그리고 Generate token 을 눌러 token 을 생성합니다. 

위 처럼 생성이 완료되면, 문자열(token)을 복사하여 둡니다. 

 

 

Jenkins 에 token 등록하기

 

--- 추가 : 2019-07-04 (댓글주신 뚱징어님 감사합니다) ---

우선 Jenkins 의 설정 > Configure Global Security 에 들어가 아래 항목을 체크 해제 합니다

 

이제 생성된 token을 jenkins에 등록해 보겠습니다. jenkins페이지에 접속하고 jenkins 관리 > 시스템 설정 으로 이동합니다. 아래와 같이 GitHub 설정을 하는 부분이 보입니다. 

Add GitHub Server 를 누릅니다. 

Name 부분에는 본인이 구분할 수 있는 이름(앞으로도 사용될 겁니다)을 넣고, API URL 부분은 그대로 둡니다. 그리고 Credentials 부분에서 Add 를 눌러 신규로 생성하는 페이지에 진입합니다. 

 

팝업에서 위 처럼 입력합니다. Secret text 를 선택하고 Secret 영역에 잘 입력해주는게 중요합니다. 물론 ID도요.

 

그리고 나서 팝업이 닫히고 나면, Credentials 부분에 drop-down 에서 방금 생성한 것을 선택하고 Test Connection을 누릅니다. 

위와 같이 Credentials verified for user.... 문구가 나타나면 정상입니다. 이제 맨 아래에 저장을 누르고 빠져나오면 Jenkins 에서의 설정은 마무리 됩니다. 

 

 

프로젝트(Item) 생성하기

 

이제 Jenkins 에서 프로젝트를 생성하고 정상적으로 가져오는지 확인해야 할 차례입니다. 

새 작업에서 위와 같이 선택하고 저장합니다. 

 

일반 설정들을 해 주고, 아래 부분에 소스 코드 관리 부분까지 이동합니다. 

URL을 넣어주고, 아래 Add를 눌러 Credentials 를 추가합니다. 

이번에는 아이디와 패스워드를 입력하고 추가합니다.

추가한 Credentials 를 선택해주고, 아래쪽으로 내려가서,

GitHub에 Push 되는 시점에 빌드를 시작하기 위해 GitHub hook trigger for GITScm polling 에 체크해줍니다.

 

이렇게 해 주고 나서는 GitHub에서 Jenkins 로 Hooking 을 날려줘야, Jenkins 에서 알게 되기 때문에, 이제는 GitHub에서 다시 설정해 줍니다. 

 

 

GitHub에서 Web Hooking 설정하기

 

이제 다시 GitHub로 돌아와서, 해당 repository의 Settings 에 들어갑니다. 그리고 좌측 메뉴에서 Webhooks 에 들어갑니다. (Integrations & services 는 구버전입니다.) 그리고 Add webhook을 눌러 추가합니다.

(이 영역이 최근에 많이 변경되어 혼동이 있을 수 있습니다. 보이는 화면이 저와 상이한 경우 가장 최근 포스팅을 구글링 하시기를 권장 합니다. )

 

당연히, GitHub 에서 Jenkins 로 Hooking 을 보내려면 Jenkins 가 외부에서도 접근 가능한, 정확하게는 GitHub에서 접근 가능한 URL을 가지고 있어야 합니다. 

 

위에서 가장 중요한 부분은 본인의 Jenkins 주소 하위에 /github-webhook/ 를 붙여주어야 한다는 것입니다. 그리고 나머지 설정은 위에서처럼 설정합니다. 저의 경우 Push 할 떄 마다 Hook 를 보내 줄 것이므로 Just the push event 에 체크하였습니다. (저는 이미 생성한 것을 보고 있어 위 처럼 Update ... 버튼이 보이지만, 아마 처음에는 Save, Apply 등이 보일 것입니다. 

 

 

확인

 

여기까지 하고나서 README.md 파일 처럼 간단한 파일을 수정하고 Jenkins 에 정상적으로 hooking 이 들어오면 잘 연결된 것입니다. 아래 그림을 참고하세요

참고:

https://bcho.tistory.com/1237

 

gitHub와 Jenkins 연결하기

Jenkins와 gitHub 연동 조대협 (http://bcho.tistory.com) 가장 널리 사용하는 Jenkins와, 소스 코드 리포지토리 서비스인 GitHub를 연동하는 방법에 대해서 알아본다. 시나리오는 gitHub에 코드를 푸쉬하면 Jenki..

bcho.tistory.com

https://dzone.com/articles/how-to-integrate-your-github-repository-to-your-je

 

How to Integrate Your GitHub Repository to Your Jenkins Project - DZone DevOps

Learn how to integrate Jenkins with GitHub projects so you can schedule your build, pull your code from GitHub to Jenkins, and more.

dzone.com

 

Comments