일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- local
- 줄복사
- spring
- ubuntu
- javaascript
- 전송포맷
- ^M바꾸기
- duplicate lines
- object
- install maven
- spring boot
- Java
- key bindings
- change file content
- Jenkins
- not to accept jdbcUrl
- driverspy
- install
- JAR
- docker
- remove
- svn backup
- mariadb
- ADB
- jdbc
- Change port
- pkgutil
- JavaScript
- gradle
- maven
- Today
- Total
Simplify
GitHub 와 Jenkins 연동하기 (How to integrate GitHub and Jenkins) 본문
GitHub 와 Jenkins 연동하기 (How to integrate GitHub and Jenkins)
Simplify - Jonghun 2019. 7. 4. 11:19개발 환경에서 서버에서의 구동은 매우 중요한 부분입니다. 게다가 저 처럼 소규모로 개인 용도로 개발하는 경우에는 물론이고, 개발환경(개발서버)에서 배포를 통해 실제 운영 서버와 동일한 환경에서 개발 환경을 구축하고 테스트하는 것은 매우 중요한 부분입니다.
이러한 점에서 자동 빌드, 배포 툴인 Jenkins 는 매우 중요한 역할을 하고 있습니다. Jenkins 의 여러가지 다양한 기능들도 있겠지만, 기본적으로 어떤 Repository(SVN, Git 등)에서 최신 소스코드를 다운로드 받아 빌드하는 역할을 합니다. Jeknins 의 다양한 기능들은 보통 plug-in 형태로 제공되며, 이를 통해 무궁무진하게 다양한 기능들을 수행할 수 있습니다.
여기서는,
- GitHub에서 최신 소스코드를 다운로드 받아(git pull)
- 빌드하고(maven)
- 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://dzone.com/articles/how-to-integrate-your-github-repository-to-your-je