도커+젠킨스+스프링부트

6. 깃허브 연동된 젠킨스를 통해 AWS EC2 서버에 deploy하기

깃허브와 연동 이전에 포트포워딩을 통해서 가상머신위 우분투에 접근할수있도록 설정해야한다.

 

포트포워딩에 대한 내용은 다루지 않고 참조한 주소만 첨부하겠습니다. 참고로 아래 글의 포워딩 방법을 따라하기위해서는 VMware Workstation Pro가 필요합니다. VMware Workstation Pro가 아니신 경우 다운로드후 키를 등록하시면 됩니다.

www.vmware.com/products/workstation-pro.html

visu4l.tistory.com/368

 

VMware에서 Port forwarding 방법

vmware에서 포트포워딩 방법 1. Edit > virtual Network Edittor... 선택 2. vmware 이미지에 적용된 network 를 선택하고 (보통VMnet8 / - NAT) 이다. > NAT Settings... 선택 3.  add를 클릭 4. 외부에서 lo..

visu4l.tistory.com

깃허브에 푸시가 발생했을때 webhook을 젠킨스로 보내서 젠킨스가 이를 받아서 빌드와 배포를 진행하도록 해야하기 때문에 깃허브 webhook 설정부터 시작하겠습니다.

 

1. 깃허브 webhook 설정

- 연동하고자하는 리포지토리의 setting에 가면 Webooks라는 메뉴가 있습니다.

- 거기서 Add webhook 버튼을 눌러주세요.

 

- Payload URL에 본인 젠킨스의 주소 + /github-webhook/이라고 적어주세요.

- 나머지는 기본값으로 두고 저장

 

이제 이 리포지토리에 커밋이 발생하면 젠킨스로 webhook이 날라가게됩니다.

 

2. 젠킨스에서 webhook을 받기

- 앞서 만들었던 젠킨스 프로젝트 구성으로 가서 빌드유발 영역에 GitHub hook trigger for GITScm polling을 체크

- 이제 깃허브가 webook을 날리면 빌드가 유발되게 됩니다.

 

3. 빌드 스크립트 작성

- 저의 deploy용 스크립트도 프로젝트에서 관리하여 jar파일과 스크립트 파일을 같이 ssh를 통해서 전송합니다.

 

4. 빌드 후 파일 전송 및 deploy 스크립트 실행시키도록 설정

- 위에서 보낼 파일들을 before-deploy로 몰아 놨기 때문에 

- Source files에서 before-deploy/* 설정을 통해서 해당 폴더에 위치한 모든 파일을 전송합니다.

- Remove prefix는 전송하는 파일만 보낼수 있도록 prefix를 제외시키게 하는 역할을 합니다.

- Remote directory는 전송받는 위치를 말합니다. 서버에 어디에 위치하게 할지 정하게 됩니다.

- Exec command는 전송이 끝난뒤 실행시킬 리눅스 명령어 입니다.

차후 전송하게 되면 이렇게 셋팅 되게 됩니다.

 

5. deploy 스크립트 작성하기

이부분은 스프링부트 프로젝트에서 진행하게 됩니다. 앞선 게시글에서 진행했던 스프링부트 프로젝트에 sripts라는 폴더를 만들고 그안에 deploy.sh 파일은 만듭니다.

deploy.sh에는 전송받은 파일을 옴긴뒤 이미 애플리케이션이 돌아가고있으면 종료시키고 새로 실행시키도록 작성하였습니다.(코드는 깃허브에 있습니다. - 주소는 하단에)

이렇게 작성이 끝나면 이제 깃허브에 푸시 해주세요. 그럼 자동으로 CI/CD가 이루어집니다. 젠킨스 빌드가 끝나면 아래처럼 AWS EC2 서버에 스프링부트가 실행되게됩니다.

 

8080포트로 접속하니 스프링부트가 정상적으로 작동하는것을 확인할 수 있습니다.

다음 게시글에서는 무중단 배포를 위해서 엔진엑스를 사용하는 부분까지 진행해 보겠습니다.

 

github.com/whdals7337/docker-jenkins-springboot

 

whdals7337/docker-jenkins-springboot

Contribute to whdals7337/docker-jenkins-springboot development by creating an account on GitHub.

github.com