ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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

     

    이상으로 스프링부트 프로젝트 초기 배포 과정에 대해서 알아보았습니다.

     

    댓글

Designed by Tistory.