[Spring Boot]자동 배포하기 Step2. Jenkins-Git WebHook을 이용한 war파일 자동 배포

JANG SEONG SU·2022년 10월 23일
post-thumbnail

선행 조건
1. Jenkins 설치
2. Maven, Git 설치
3. Jenkins GitServer 연동 ←위 사항은 꼭 선행되어야함!
(3번 링크 참조 : https://velog.io/@tjdtn0219/Spring-Boot%EC%9E%90%EB%8F%99-%EB%B0%B0%ED%8F%AC%ED%95%98%EA%B8%B0-Step1.-Jenkins-Git-%EC%97%B0%EB%8F%99)

Step.

  • Github - WebHook 등록
  • Jenkins - Global Tool Configuration 설정
  • Jenkins - Item에 환경 설정

1. Github - Webhook 등록

연동하려는 Repository -> Settings -> Webhooks -> Addwebhook

Payload URL : {Jenkins 서버 IP}:{port}/github-webhook/
Content type : application/json

다음과 같이 Webhook을 생성해줍니다.

2. Jenkins - Global Tool Configuration 설정

Jenkins 관리 -> Global Tool Configuration

Git Jdk Maven 환경 설정

Git, JDK, Maven 모두 Jenkins가 설치되어 있는 서버에 환경 변수 경로를 입력한다

** 주의 사항 **
JDK의 경우 Jenkins를 실행시키는 실행하는 JDK Version(8 or 11)중 하나를 Jenkins 환경 변수로 설정해야 한다. 초기에 Jdk 17을 환경으로 설정하니 Build하는 도중 에러가 발생하였다.
(Spring boot 프로젝트의 pom.xml에도 Java version 11로 작성해야 한다. 즉, 서버 내에서 jenkins를 이용하여 자동배포를 한다면 Spring Boot의 jdk 버전은 버전8 또는 11로 개발해야 한다.)

3. Jenkins - Item 환경 설정

!! 시스템 설정에서 이미 GithubServer과 연결되어 있어야함

General 설정

설명 : 젠킨스 프로젝트 구성의 Build Trigger 설정

젠킨스 프로젝트의 구성 탭으로 이동하여, GITScm polling을 위한 Github hook trigger를 빌드 유발 설정으로 선택한다. 이 선택은 위의 SCM(소스 코드 관리) 탭에서 연동한 Github 저장소에서 push에 의한 hook 이벤트가 발생할 경우 저장소를 polling해서 젠킨스의 자동 빌드를 유발한다.

소스코드 관리 설정

Git

빌드 유발

Build Steps

여기까지 진행하면 아래 그림과 같이 /var/lib/jenkins/workspace/{SpringBoot프로젝트}/target에 war파일이 생성된 것을 볼 수 있다. 이제 이 war파일은 Tomcat이 동작하는 디렉토리(../tomcat/webapps)에 넣어주면 끝이다.

빌드 후 조치 :
Post Build Task 플러그인 사용
(Post Build Task 플러그인이 없다면 별도로 플러그인 설치 후 사용 가능)

Jenkins 처음 시작할 때 기본 플러그인 설치 목록에는 Post build task 라는 플러그인이 없기 때문에 별도로 설치가 필요하다.

빌드 후에 작성된 Script로 Case별로 동작이 가능한 플러그인이다.
다음과 같이 Jenkins Log에 SQL 연결 실패나 빌드 실패가 감지되면 "Build 중 에러 발생"이라는 문구를 Console에 출력한다.
Build SUCCESS가 감지되면 다음과 같은 스크립트로 동작을한다.
스크립트를 간단히 설명하자면, /var/lib/jenkins/workspace 아래에 Git으로부터 받은 레포지토리 안에 target 폴더에 war파일을 Spring이 동작하는 webapps로 욺겨주는 방식이다.

profile
Software Developer Lv.0

0개의 댓글