-
[Jenkins] 스프링부트 프로젝트 배포 - 초기 배포 (1)관리 배포/jenkins 2020. 11. 9. 20:21
이번 시간에는 스프링부트 프로젝트를 Jenkins를 통해서 빌드 및 배포하는 방법에 대해서 알아보도록 하겠습니다.
저는 배포 아이템을 다음과 같이 구성하였습니다.
- 초기 배포
- 처음 배포 시에만 사용합니다. 그 이후에는 업데이트 배포를 통해서 변경 사항을 반영합니다.
- 업데이트 배포와의 차이점은 executable jar 파일을 리눅스 서비스에 등록하는 과정이 존재합니다.
- 업데이트 배포
- 초기 배포 이후 소프트웨어 업데이트가 필요할 때 사용합니다.
[General] 탭 설정
Jenkins Slave 노드를 구성 한 경우 [Restrict where this project can be run] 옵션을 체크 한 후, Label Expression에 Slave 노드 추가 시 작성한 노드 이름을 입력합니다. Jenkins 노드 구성 방법은 [Jenkins] Docker 컨테이너 구축 포스트를 참조하시면 됩니다.
[소스 코드 관리] 탭 설정
소스 코드 관리 탭에서는 Github로부터 checkout할 repository 정보를 입력합니다.
여기서 Github 인증에 필요한 Credentials 설정은 [Jenkins] Github 연동 가이드 포스트를 참조하시면 됩니다.
[Build] 탭 설정
Build 탭에서는 다음과 같이 3개의 빌드 동작이 진행됩니다.
- 소스 코드 빌드
- 원격 서버로 빌드 파일 배포
- 원격 쉘 명령어 실행
우선 소스 코드 빌드부터 살펴보겠습니다.
예제 프로젝트의 경우 빌드 도구로 gradle을 설정하였습니다. gradlew를 사용하여 clean, build 태스크를 수행합니다.
다음으로 원격 서버로 빌드 파일을 배포하겠습니다.
파일 배포 시 spring-boot-log-stage.conf 파일도 같이 배포되는데 해당 파일은 리눅스 서비스 생성 시 사용 될 설정 파일입니다.
환경에 맞는 설정 파일을 배포해서 동작할 수 있도록 합니다.
JAVA_OPTS="-Xmx512m \ -Xms256m \ -XX:PermSize=256m \ -XX:MaxPermSize=256m -Dspring.profiles.active=stage"
원격 서버로 파일을 전송하는 부분을 설정합니다.
SSH Server의 Name 부분에는 환경 설정에서 추가한 서버를 선택하면 됩니다.
이에 대한 설정은 [Jenkins] Publish Over SSH 설정 포스트를 참조하시면 됩니다.
마지막으로 원격 쉘 명령어를 호출하여 초기화 작업 및 리눅스 서비스 등록 작업을 진행합니다.
원격 쉘 명령어를 사용하기 위해서는 명령을 실행할 서버에 대한 인증과 접속을 위한 설정을 진행해야 합니다.
해당 내용은 [Jenkins] Execute shell script on remote host using ssh 사이트 등록포스트를 참조하시면 됩니다.
# 리눅스 서비스 등록 시 필요한 설정 파일 이름 변경 $ mv /home/1004569/deploy/spring-boot-log/spring-boot-log-stage.conf /home/1004569/deploy/spring-boot-log/spring-boot-log.conf # 로그 디렉토리 생성 $ mkdir /home/1004569/deploy/spring-boot-log/logs # 로그 디렉토리 권한 변경 $ chmod 775 /home/1004569/deploy/spring-boot-log/logs # executable jar 파일 권한 변경 $ sudo chmod 775 /home/1004569/deploy/spring-boot-log/spring-boot-log.jar # executable jar 파일을 리눅스 서비스로 등록 $ sudo ln -s /home/1004569/deploy/spring-boot-log/spring-boot-log.jar /etc/init.d/spring-boot-log # 서비스 시작 $ /usr/sbin/service spring-boot-log start
이상으로 스프링부트 프로젝트 초기 배포 과정에 대해서 알아보았습니다.
'관리 배포 > jenkins' 카테고리의 다른 글
[Jenkins] Execute shell script on remote host using ssh 사이트 등록 (0) 2020.11.09 [Jenkins] Execute shell script on remote host using ssh 사이트 등록 (0) 2020.11.09 [Jenkins] Publish Over SSH 설정 (0) 2020.11.09 [Jenkins] Github 연동 가이드 (0) 2020.11.06 [Jenkins] Shell Script 실행 시 날짜를 파라미터로 넘기는 방법 (0) 2020.11.03 - 초기 배포