Jenkins로 Spring Boot 2 + Vue 3 프로젝트를 리눅스 서버에 배포하기 (2)

Jenkins로 프로젝트 자동 배포하기

지난 글에서는 나의 프로젝트를 배포할 서버를 세팅하는 과정에 대해 다루었다. 이번 글에서는 Jenkins를 통해 Spring Boot 2 + Vue 3 프로젝트를 자동 배포하는 방법에 대해 다루도록 하겠다. Jenkins를 사용할 것이기 때문에, 당연히 Jenkins가 배포되어 있는 서버가 필요하다. 만약 Jenkins 서버가 없다면 아래의 글을 참조해 하나 만들도록 하자.

Docker로 Jenkins 서버 구축하기
준비사항 * Docker가 설치되고 사용할 수 있는 환경 사전설명 이 글의 내용은 Linux/MacOS/Windows 운영체제에서 적용이 가능 하지만, 각 운영체제 별로 적용 방법이 조금씩 상이할 수 있다. 여기서는 기본적으로 MacOS를 기반으로 작성했음을 알린다. 운영체제 별로 몇 가지 차이점에 대해 미리 설명하자면 다음과 같다. * Linux의 경우 sudo 권한을 이용해 Docker를 설치하기

플러그인 설치하기

Jenkins 서버가 준비되었다면, 웹 브라우저로 해당 서버에 접속해 로그인 하도록 하자. 로그인 하면 아래와 같은 화면이 제일 먼저 보일 것이다. 여기서 좌측에 Jenkins 관리 버튼을 클릭하자.

그 다음은, 플러그인 관리 버튼을 클릭한다.

Spring Boot 2 + Vue 3 프로젝트를 배포하기 위해 필요한 플러그인은 총 3 가지다. Gradle 혹은 Maven, NodeJS, Publish over SSH 이다. 이 중에서 Gradle 이나 Maven은 Jenkins를 설치할 때 권장 플러그인 설치 옵션으로 설치하면 기본적으로 설치되므로 NodeJS와 Publish over SSH만 추가적으로 설치해 주면 된다.

Plugin Manager 페이지에서 설치 가능 탭을 클릭한 다음, nodejs를 검색한다. NodeJS 플러그인을 찾아 좌측 체크 박스를 체크한 다음, 아래의 Install without restart 버튼을 클릭해준다.

Over Publish SSH도 설치해야 하기 때문에 아직 restart 할 필요가 없다

NodeJS 플러그인이 설치가 완료되었다면, 이번에는 Publish over SSH 플러그인을 검색해 설치하도록 하자. 이번에는 체크 박스를 체크하고 Download now and install after restart 버튼을 클릭하자.


플러그인 설정하기

Jenkins가 재시작 되고 나면, 다시 Jenkins 관리 페이지로 돌아온다. 그 다음 Global Tool Configuration 버튼을 클릭한다.

아래와 같이 Gradle, Maven, NodeJS 세 개가 모두 보이면 우선 Spring Boot 2 + Vue3 프로젝트 빌드용 툴은 정상적으로 설치된 것이다.

Publish over SSH는 여기에 표시 되지 않는다

Spring Boot 2가 Gradle 프로젝트기 때문에, Gradle과 NodeJS를 설정하도록 하겠다. 우선 Gradle부터 설정하겠다. Gradle 항목에서 Add Gradle 버튼을 클릭한다.

나는 Gradle 7 버전대를 사용하고 있다. name에는 Gradle 버전을 식별할 수 있는 이름을 지정해 주고, 아래에 버전을 선택해주자.

Major 버전이 동일하면 호환되기 때문에, 그냥 가장 최신 버전인 7.5.1로 선택했다

다음은 NodeJS를 설정하겠다. 마찬가지로 Add NodeJS 버튼을 클릭한다.

프로젝트를 진행할 때는 NodeJS 16 버전대를 사용하고 있었으므로 16.17.0을 선택했다. Gradle, NodeJS를 모두 설정하고 나면 맨 밑의 ApplySave 버튼을 순차적으로 눌러주자.

참고로 NodeJS는 Major 숫자가 짝수인 게 LTS 버전이다

만약 본인의 프로젝트가 npm이 아닌 yarn을 이용해 빌드 한다면, 다음과 같이 Global npm packages to install 항목에 yarn을 입력해주고 적용하자.


다음은 Publish over SSH 플러그인을 설정하겠다. 다시 Jenkins 관리 페이지로 돌아와서 시스템 설정 버튼을 클릭한다.

시스템 설정창에서 Publish over SSH 항목을 찾으면 Key를 입력하는 곳이 있다. 여기에는 VPS 인스턴스를 생성 했을 때 다운로드 받은 pem 확장자 명을 가진 파일에 적힌 문자열을 모두 복사해 붙여 넣어주면 된다. 만약 별도의 보안 키를 쓰지 않는 서버라면 적지 않아줘도 상관 없다. Key 값을 설정해 줬다면 SSH Servers 밑의 추가 버튼을 클릭한다.

pem 파일은 notepad로 열면 된다

새로 추가할 SSH Server에 필요한 사항을 적어줘야 한다. 각각의 내용은 다음과 같다.

  • Name: 서버를 식별할 고유의 이름
  • Hostname: 배포할 서버의 IP 및 도메인 주소
  • Username: 배포할 서버에서 사용하는 사용자 계정
  • Remote Directory: 원격 조작 시, 기본 위치로 사용할 경로
    (일반적으로 /home/사용자명/ 을 Remote Directory로 사용한다.)

모든 필수 값을 지정해 준 다음, 우측 하단의 Test Configuration 버튼을 클릭하자. 좌측에 Success 가 뜬다면 정상적으로 설정이 완료된 것이다. 만약 Success가 뜨지 않는다면, 해당 서버의 22/TCP 포트가 막혀있거나 설정을 잘못한 게 아닌지 재확인 하길 바란다.

설정이 완료되면 플러그인 관리 페이지에서 처럼, 가장 밑에 Apply저장 버튼을 순차적으로 클릭해 주자.

어째서 인지 모르겠지만, 여기 페이지는 저장으로 번역되어 있다(...)

정리하며

여기까지 Spring Boot 2 + Vue 3 프로젝트를 배포하기 위한 Jenkins의 사전 설정이 완료되었다. 다음 글에서는 Gradle, NodeJS 플러그인으로 프로젝트를 빌드하고 Publish over SSH 플러그인을 이용해 원격으로 배포 서버에 접속하고 배포하는 방법에 대해 적도록 하겠다.