본문 바로가기

Study/Server

[Jenkins] (2) Mac 로컬에서 Maven 프로젝트 GitHub 연동 및 자동 빌드하기

Maven 환경 셋팅

젠킨스에서 GitHub에 소스 코드가 변경될 때 Maven 프로젝트를 로컬에 빌드하는 배포 자동화 시스템을 구축할 것이다.

 

 

1. Jenkins 화면 왼쪽 메뉴에서 "Jenkins 관리" 클릭

Jenkins 메뉴 화면

 

 

 

2. Dashboard > Jenkins 관리 > Tools : 환경설정

- Maven Installations 설정

 

 

 

3. Dashboard > Jenkins 관리 > Plugins > Available Plugins: 플러그인 설치

 

(1) GitHub Integration 설치

 

(2) Maven Integration 설치

 

 

 

4. 새로운 Item 만들기

 

 

(1) Item 이름 입력 후 "Freestyle Project"로 선택 후 OK

 

(2) Item 환경 설정

- GitHub Project(Repository) URL 입력 

 

 

 

- 소스 코드 관리 입력

* 연결할 Repository가 비공개인 경우 Credentials를 추가해야 한다.

 


Credentials 추가하는 방법

Username: GitHub 로그인 아이디
Password: 토큰 (토큰 발급시 Scope에 repo, admin:org, admin:repo_hook 세 부분에 체크해야 한다)
ID: Jenkins 내부에서 사용시 보여질 식별 이름

GitHub Access Token 발급시 체크할 부분 확인

 

 

발급받은 Access Token을 Jenkins 설정 화면에 입력

 

 


 

 

- Branch 설정 (Branches to build)

default branch명은 "master"인데 본인이 사용하는 브랜치 명으로 설정한다.

 

 

 

5. GitHub Webhooks 등록

GitHub Webhook은, 특정 이벤트 발생 시 다른 URL로 API 호출을 할 수 있게 한다. GitHub에 소스코드를 올렸을 때

GitHub ->(Webhook)-> Jenkins 로 build 요청할 수 있게 되는 것이다.

 

GitHub에 접속해 해당 Repository > Settings > (좌측) Webhooks  > Add webhook을 차례대로 클릭한다. 

 

Webhook 설정 화면

 

Add webhook 화면

 

지금 local 환경에 설치 중이라 Payload URL에 localhost 주소를 입력했는데, 사진과 같이 localhost로는 절정이 되지 않는다. 

 

따라서 ngrok을 사용해 GitHub -> 로컬 서버에 접근 할 수 있도록 추가 작업이 필요하다.

 

 


 

- ngrok으로 로컬 네트워크 터널 열기

ngrok은 쉽게 말하면 외부에서 (방화벽을 넘어) 로컬에 접속할 수 있도록 해주는 기능이다. 로컬에서 개발시 외부 애플리케이션 등 외부로부터 현재 작업중인 로컬과 연결할 수 있어 개발 단계에서 유용하게 쓸 수 있다.

 

 

(1) https://ngrok.com/ 에 접속해 회원가입 (무료)

 

 

(2) ngrok 설치

터미널에서 아래 명령어를 입력해 ngrok을 설치한다.

$ brew install ngrok/ngrok/ngrok

 

 

(3) 할당된 Authtoken으로 설정

회원가입 한 사이트에서 Your Authtoken 탭을 찾아 커맨드라인 채로 복사해 터미널에 입력한다.

$ ngrok config add-authtoken {your_authtoken}

 

 

(4) 터미널에서 자신에게 할당된 Forward url 확인

$ ngrok http http://localhost:8080

위의 사진에서 "Forwarding" 부분에 있는 주소가 곧 자신에게 할당된 URL이다. 이 URL은 ngrok 접속 할때마다(로컬 네트워크 터널을 열 때마다) 변경된다.

 

**주의할 점**

위의 명령어를 입력한 상태에서 종료하면 할당된 URL을 더이상 사용하지 못하게 된다. 즉, 로컬에서 작업 중인 경우 connection을 종료하지 말 것!!

 


 

 

 

위의 URL을 복사해 다시 GitHub에 돌아가 Payload URL에 입력한 뒤 저장하면 등록 끝!

https://{your_forwarding_url}/github-webhook/

Webhooks 등록 완료

 

 

 

6. Jenkins 프로젝트(Item) 설정

(1) 젠킨스 Dashboard > Item 선택 > 구성(Configuration) 탭에서 "Build Steps" 에서 Invoke top-level Maven targets를 선택.

 

Goals 부분에는 빌드 명령어를 적는데, 아래와 같이 입력했을 경우 $ mvn clean compile package 이렇게 커맨드가 실행된다.

빌드 후 조치 추가 Options

 

 

(2) 빌드 유발에서 GitHub hook trigger for GITScm polling에 체크. 

 

마지막으로 이 부분을 체크해야 GitHub에 push했을 때 자동으로 Jenkins에 빌드 요청이(?) 들어간다. 즉 빌드가 유발된다.

 

 

 

이제 GitHub으로 소스 코드를 Push 하면 아래 사진과 같이 자동으로 Jenkins에서 build 된다. 성공!

GitHub Push 후 자동 빌드된 결과

 

 

/Users/{your_name/.jenkins/workspace/{project_name}/target/

위의 경로에 들어가면 .jar 확장자 파일이 생성되어 있을 것이다.

 

 

 

참고 :https://young1403.tistory.com/96

 

 

 

 

 

반응형