[Jenkins] 3. GitHub hook을 이용한 Spring Boot 웹애플리케이션 빌드 자동화

2020. 7. 14. 11:37CentOS 7/Jenkins

반응형

이전 시간에 Jenkins를 설치하고 앱 배포에 필요한 기본적인 Global Tool 구성도 완료하였습니다.
기본 설정을 완료하였으니, 이제 item을 추가해봅시다.

Git Repository를 연결한 item을 추가하고, push 이벤트 발생시 자동으로 빌드를 유발시켜 Spring Boot 웹 애플리케이션의 빌드를 자동화 합니다.


  1. Item(프로젝트) 생성
  2. General 설정
  3. 소스코드 관리 - Git
  4. Build - Invoke top-level Maven targets
  5. 빌드 유발 - GitHub hook

1. Item 생성 및 프로젝트 생성

06

Item 생성을 위해 새로운 Item을 클릭합니다.


07

이름을 설정하고 Freestyle project를 선택하여 프로젝트를 생성합니다.


2. General 설정

General은 프로젝트 소개를 간단하게 작성하는 부분입니다.

08

연동될 GitHub 프로젝트 url주소, 매개변수, 빌드 삭제 옵션 등에 대한 설정을 합니다.

저의 경우, Build 보관은 최대 3개만 보관되도록 설정했습니다.


3. 소스코드 관리 - Git

소스코드가 올려져 있는 VCS(버전관리 시스템)의 clone 주소를 Repository URL에 설정합니다.
만일 소스코드 관리 탭에서 원하는 VCS가 나오지 않는다면 Jenkins 플러그인을 설치하면 됩니다.

GitHub repository를 item에 설정해봅시다.
repository를 연결하기 위해서는 Repository URL과 함께 Credentials(자격 증명)도 설정해야 합니다.


Repository URL을 작성하는 방식에는 2가지가 있습니다.

25

HTTPS 방식


26

SSH 방식

web url을 사용하는 방법과 ssh key를 이용하는 방법은 Repository URL 주소도 다르고, 자격증명을 위해 요구되는 정보도 다릅니다.

이번 포스팅에서는 web url과 username & password 를 이용하여 자격증명을 합니다.


35

Add 버튼을 누릅니다.

34

GitHub의 username과 password를 이용한 Credentials 을 생성합니다.

36

아이템과 연결할 Repository URL과 Credentials 설정한 후, 위와 같이 빨간색 에러문구가 나오지 않는다면 정상적으로 연결된 것입니다.


4. Build - Invoke top-level Maven targets

44

jenkins는 위와 같이 다양한 방식의 Build 실행을 제공합니다.(만일 select박스에 원하는 build 실행방식이 없다면 plugin을 다운받으면 됩니다.)

현재 추가하고 있는 demo 웹 애플리케이션의 빌드 도구는 maven 이기 때문에 저는 Invoke top-level Maven targets을 선택했습니다.

mvn [options] [<goal(s)>] [<phase(s)>]

28

mvn 실행시 수행할 옵션 및 goal명령어를 Goals에 작성합니다.

  • clean : 컴파일 결과물인 target 디렉토리 제거
  • package : 컴파일, 테스트 후 pom.xml의 <packaging>설정에 따라 패키징 수행
  • -P prod : 활성화할 프로파일을 prod로 설정

빌드 설정까지 완료한 후, demo item의 Build Now 탭을 누를 경우, $JENKINS_HOME/workspace/demo 에 demo 프로젝트가 빌드된 결과물이 생성됩니다.

아직은 별도의 빌드 유발 설정을 하지 않았기 때문에 수동적으로 Build Now 버튼을 눌러줘야만이 빌드가 됩니다.
Git 소스상의 변동이 생겼을 시 자동으로 Build를 유발시키도록 해봅시다.


5. 빌드 유발 - GitHub hook

38

코드 상에 push와 같은 이벤트 발생시 GitHub로부터 hook 트리거를 받아 빌드를 유발시킵니다.

37

jenkins를 설치한 호스트 주소와 jenkins에 설정된 port를 이용하여 Payload URL을 설정합니다. (http://호스트주소:port/github-webhook/)
저의 경우, jenkins 웹페이지 주소에 가상호스팅을 이용한 도메인 설정을 하였기 때문에 위와 같은 도메인 url 주소를 작성하였습니다.

※ 가상호스팅 관련하여 더 알고싶다면 [CentOS 7] Apache 2.4를 이용한 VirtualHost(가상호스트) 설정를 참고해주세요.

webhook을 발생시키는 트리거는 push 이벤트로 한정하였으나, 필요하다면 Let me select individual events를 선택하여 다양한 이벤트를 설정할 수 있으니 참고해주시기 바랍니다.


이번 시간에는 GitHub에 push 이벤트가 발생했을 시, 자동으로 build를 하여 jar형태로 앱을 만들어주는 것까지 진행하였습니다.

다음 시간에는 build step을 추가하여 앱을 deploy하는 방법을 알아볼 것입니다.

반응형