본문 바로가기

기타

[개발환경] 젠킨스(Jenkins) + 톰캣(Tomcat) 서버 + 서브버전(SVN) + 메이븐(Maven) Project 자동빌드 및 배포 설정 총정리

이번엔 마지막으로 젠킨스를 이용해서 SVN에 있는 Maven 프로젝트를 젠킨스를 이용해서 빌드 후 톰캣서버에 디플로이하는 방법을 알아보겠습니다. 

 

개발환경 관련 이전 포스팅

  1. [개발환경] Visual SVN Server와 Tortoise SVN Client 툴을 설치하고 연동해서 활용하는 방법(문서공동작업, 소스형상관리)
  2. [개발환경]이클립스(eclipse)와 서브버전(SVN) 연동해서 프로젝트 소스형상관리하는 방법

젠킨스를 이용해서 지속적인 자동화 빌드 체계를 구축해보자

 

 

1. 젠킨스 설치

https://jenkins.io/

 

Jenkins

Jenkins – an open source automation server which enables developers around the world to reliably build, test, and deploy their software

jenkins.io

 

젠킨스 홈페이지 이동 후 Download 클릭
설치하고자 하는 OS에 맞게 선택 (Windows 선택)

 

프로그램 설치
다운로드 받은 프로그램 설치

 

설치를 완료하면 http://localhost:8080/ 경로를 이용해서 웹브라우저에 아래와 같이 표시됩니다.

아래에 표시된 경로에 비밀번호가 적힌 파일이 있습니다. (initialAdminPassword 파일)

해당 파일에 적힌 비밀번호를 확인 후 비밀번호를 입력합니다. 

initialAdminPassword 파일에 있는 비밀번호 입력

 

별도로 플러그인을 선택해서 설치할 경우 'Select plugins to install을 선택합니다. 

나중에 플로그인을 추가하거나 삭제할 수 있으므로 Install suggested plugins 를 클릭해도 됩니다. 

 

플러그인을 설치합니다. 시간이 꾀나 걸리네요

계정을 생성합니다. (전부 admin으로 했습니다. ㅎㅎ)

계정 생성

 

젠킨스 URL을 정의할 수 있습니다. 이 때 젠킨스가 설치된 컴퓨터 IP를 이용해서 URL을 구성하면 다른 사람도 젠킨스에 접근할 수 있습니다. (다른 사람이 호스트 설정하기 귀찮으니 컴퓨터IP를 이용해서 URL을 구성하는게 좋습니다.)

URL 설정

 

Maven 프로젝트 빌드를 위한 젠킨스 설정

젠킨스에서 maven 프로젝트를 빌드하려면 jdk, maven 을 연동해야 합니다.
젠킨스 관리화면에서 Jenkins관리 - Global Tool Configuration을 클릭합니다.

 

 

JDK 경로 설정. Install automatically항목은 필요없으니 체크해제

 

Maven 설정

Maven이 설치되어 있지 않으므로 Install automatically 항목체크

 

 

jenkins 관리 - 플러그인 관리 에서 설치 가능 탭에서 Maven Integration 플러그인 설치해줍니다.

 

톰캣 서버 배포를 위한 플러그인 설치

젠킨스가 빌드한 결과물(war파일)을 톰캣에게 배포하려면 Deploy to container Plugin 플러그인이 필요합니다.

jenkins 관리 - 플러그인 관리 에서 설치 가능 탭에서 deploy to ontainer를 검색해서 설치합니다.

Deploy to container Plugin 플러그인

 

젠킨스에서 톰캣서버에 접근하기 위해 톰캣서버 tomcat-users.xml 수정

톰캣서버루트/conf/tomcat_users.xml 파일

</tomcat-users> 루트 태그 바로 안쪽에 추가하면 됩니다.

<!-- 젠킨스 톰캣서버 빌드를 위해 사용자계정 추가-->
<role rolename="tomcat"/>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<role rolename="admin-gui"/>
<role rolename="admin-script"/>
<user username="admin" password="admin" roles="tomcat,manager-gui,manager-script,manager-jmx,manager-status,admin-gui,admin-script"/>

참고. 톰캣 권한 설정 정보

 

 

톰캣서버를 재시작해줍니다.

CMD 창에서 톰캣서버 bin 폴더로 이동 후 shutdown.bat, startup.bat 실행

 

 

 

젠킨스 새로운 아이템(프로젝트) 추가

 

Maven Project를 선택합니다.

 

 

 

소스 코드 관리에서 SVN Repository URL 입력하고, 접근할 수 있는 계정정보 관리를 위해  Credentials의 Add - Jenkins를 클릭합니다.

 

젠킨스 계정관리 화면에서 SVN에서 생성한 사용자계정을 입력합니다.

 

 

계정을 추가하면 Credentails에서 추가한 계정을 선택할 수 있습니다. 

 

Build에서 pom.xml을 선택하고, Goals에는 clean install을 입력합니다. 

혹시, pom.xml이 SVN 경로 바로 아래에 있지 않고 프로젝트 폴더 안에 위치한 경우는 폴더 경로를 추가해줘야 합니다. 

SVN 루트를 기준으로 pom.xml 위치를 작성

 

 

빌드 후 조치 에서 Deploy war/ear to a container를 클릭합니다.

 

 

 

젠킨스 Job 실행

모든 설정이 완료되었으니 프로젝트 Build Now를 클릭한다. 

 

 

그런데 빌드 실패!

 

 

SVN에서 소스는 잘 가져왔는데 빌드할 때 사용할 pom.xml을 찾지 못하고 있습니다.   그런데 젠킨스에 보면 pom.xml이 잘 가져온게 보이네요.

 

SVN에서 소스를 가져와서 Jenkins workspace에 저장된 모습

 

에러메세지를 보니 pom.xml 파일을 TestMavneProject 폴더 밑에서 찾고 있네요. 그런데 실제 pom.xml은 TestMavneProject/maventest 라는 폴더 안에 들어가 있네요.

 

왜 그런가 봤더니 SVN에 폴더 구조가 maventest 폴더 안에 개발소스가 들어가 있는 구조입니다. 

 

그래서 젠킨스에서 pom.xml 경로를 변경했습니다. 

 

 

그리고 Build를 했더니 정상적으로 빌드까지는 성공했습니다. 

젠킨스 콘솔 창

 

젠킨스 workspace의 target 폴더에 생성된 war 파일

 

이번엔 톰캣서버 디플로이 실패!!

ERROR: Build step failed with exception
org.codehaus.cargo.container.ContainerException: Failed to redeploy [C:\Program Files (x86)\Jenkins\workspace\TestMavneProject\maventest\target\maventest-0.0.1-SNAPSHOT.war]
Caused by: java.net.ConnectException: Connection refused: connect
Build step 'Deploy war/ear to a container' marked build as failure
Finished: FAILURE

Connection refused 가 원인이네요.

 

톰캣서버가 꺼져있었습니다. ㅎㅎ

톰캣서버 재실행하고 다시 빌드하니 톰캣서버 디플로이까지 잘 되네요. 

 

 

톰캣서버 war파일 디플로이 한 모습

 

그런데 war파일 이름을 잘 정해야할거 같네요. 아래와 같이 이상한 URL이 되어 버렸습니다. ㅎㅎ

그래도 일단 성공하니 기분은 좋네요.

 

 

 

이제 모든 개발자들은 젠킨스 URL을 통해 젠킨스에 접속 후 언제든 빌드를 할 수 있게 되었고, 빌드를 실행하면 자동으로 톰캣서버에 배포가 되고, 반영된 내용을 웹브라우저에서 확인할 수 있게 되었습니다. 

 

 

 

참고로 개발환경 구축은 내용이 길어서 아래와 같이 연재로 구성했습니다.

 

1. [개발환경] 개발서버를 이용해서 여러명의 개발자가 공동작업하는 환경에 대한 설명

 

개발서버를 이용한 여러명의 개발자가  공동작업하는 구성도


2. [개발환경] 웹 프로젝트 빠르게 실행하기(샘플 프로젝트를 이용해서 무작정 따라하면 HelloWorld 볼 수 있음, 이클립스 + Maven Web Project + Spring + 톰캣서버)

 

3. [개발환경] Visual SVN Server와 Tortoise SVN Client 툴을 설치하고 연동해서 활용하는 방법(문서공동작업, 소스형상관리)

 

4. [개발환경]이클립스(eclipse)와 서브버전(SVN) 연동해서 프로젝트 소스형상관리하는 방법

 

5. 젠킨스(Jenkins) + 톰캣(Tomcat) 서버 + 서브버전(SVN) + 메이븐(Maven) Project 자동빌드 및 배포 설정 총정리