본문 바로가기
백엔드/서버 개발 필요 지식

[Jenkins] Jenkins로 Spring 배포하기

by 손정빈 2019. 9. 30.
728x90
반응형

회사 내에서 사용하고 있는 젠킨스를 통해 Spring 프로젝트를 배포하는 과정을 기억하고 정리하기 위해 글을 작성합니다.

 

우선 젠키스가 무엇인지 간략하게 정의하겠습니다.

 

What is Jenkins?

젠킨스는 소프트웨어 개발시 지속적으로 통합 서비스를 제공해주는 툴입니다. CI (Contiuouse Intergration) 툴이라고 표현합니다.

다수의 개발자들이 하나의 프로그램을 개발할 때 버전 충돌을 방지하기 위해 각자 작업한 내용을 공유영역에 있는 저장소에 업로드함으로써 지속적인 통합이 가능하도록 해줍니다.

 

저는 젠킨스를 쉽게 생각해 자동배포 툴이라고 생각합니다.

그 외에다 많은 기능과 역할이 있겠지만 우선 제가 쓰는 목적으로는 자동배포가 1순위기에 위외같이 짧게 정리하고 마치겠습니다.

 

 

제가 일하고 있는 회사에서는 젠킨스 세팅을 위해 New View를 통해 먼저 해당 프로젝트에 Item을 추가할 View를 생성합니다.

저는 List View 를 선택하고 해당 조회명에 프로젝트 명을 입력합니다.

 

그후 새로운 Item 선택을 통해 배포 할 프로젝트에 이름을 작성해주신 후 FreeStyle project를 눌러주시면 됩니다.

 

여기서 View와 그 안에 Item을 만드는 이유는 제가 배포할 프로젝트가 멀티 모듈 프로젝트이기에 

예) Taco라는 프로젝트 안에 Taco-mercy, Taco-genji로 나눠지게 됩니다. 

위와 같이 프로젝트 안에 프로젝트가 나눠지기 때문에 각 프로젝트에 대해서 따로 배포 하기 위해 Item을 프로젝트 마다 만들어줍니다.

 

여기까지 완료하셨다면 이제 위와 같은 화면이 나올 것입니다.

저는 우선 오래된 빌드 삭제를 선택하고 유지 기간을 7일로 설정합니다.

Jenkins 서버에 메모리를 계속 차지 할 수 있기 때문에 7일로 저는 설정하였습니다.

그 후 이 빌드는 매개변수가 있습니다를 통해 BRANCH와 MODULE에 대한 매개변수를 생성해 줍니다.

branch의 경우 master / develop

module의 경우 taco-genji / taco-mercy 

를 설정합니다. 굳이 안하셔도 되는데 저의 사수분이 위와 같은 방식으로 해왔기에 따르려고 합니다.

아래와 같은 방식으로 말이죠.

 

 

소스 관리에서는 해당 프로젝트 레파지토리에 대한 주소를 입력 후 아까 설정해준 매개변수를 통해 Branches to build를 설정해줍니다.

 

이제 마지막으로 빌드에 대해서 설정해주면 끝이 납니다.!!! 

저같은 경우 aws beanstalk을 통해 무중단 배포를 할 경우와 그냥 shell script로 배포하는 경우가 있는데

이번에는 shell script로 배포할 것입니다.

우선 Excute shell을 통해 

프로젝트의 서브 모듈과 build를 진행합니다.

위와 같이 처리하게 되면 Jenkins 서버에 아주 이쁘게 .jar파일 빌드 될 것입니다.

build를 통해 생서된 JAR파일을 배포할 서버에 배포하기 위한 셋팅입니다.

 

모든 완성이 되었다면 저장을 눌러주시면 됩니다.!!

 

 

근데 여기서 문제점 한가지!!!

Jenkins에서 ssh 접속을 할 경우 key에 대해 올바르지 않은 형식이라고 할떄가 있습니다.

이는 Jenkins plugin에 ssh가 최근 암호화 방식에 대해서 지원을 하지 못하기 때문입니다.

그러기에 Jenkins에서 암호키가 정상적으로 작동하기 위해서는 2048길이의 암호키로 생성하여야 합니다.

 

되게 간략하게 젠킨스 배포 과정을 작성해보았습니다. 궁금하신 내용은 댓글을 달아주시면 답변드릴게요.

감사합니다.

반응형

댓글