들어가기
이 실습은 로컬 개발pc(Wincows10 pro) + SVN 서버(CentOs7_1) + Tomcat 서버(CentOs_2) + Jenkins 서버(CentOs7_3) 환경에서 실습을 진행했다.(윈도우 pc 1개, centos7 3개)
실습을 위해 기본적으로 maven 프로젝트와 이 프로젝트를 관리하는 svn서버, tomcat 서버, 젠킨스 서버가 필요하다.
실습환경
- CentOs7
- jdk1.8
- maven3
- Tomcat7
- Spring mvc maven project.war
선행작업
CentOs7에 jdk 설치
CentOs7에 메이븐(maven) 설치
CentOs7에 Jenkins설치
젠킨스에 jdk, maven 연결
일단 젠킨스에서 maven 프로젝트를 빌드하려면 jdk, maven 을 연동해야 한다.
젠킨스 웹에서 Jenkins관리 - Global Tool Configuration을 클릭한다.
아래처럼 Global Tool Configuration화면이 나오는데 JDK, Maven항목에 버튼을 이용하여 각각 설치된 JDK, Maven 을 설정해야 한다.
위 처럼 젠킨스 서버에 설치된 JDK 경로와, Maven 경로를 설정하자.
Install automatically항목을 끄자.(만약 설치가 않되어 있을경우 자동 설치해주는 옵션이다.)
그리고 보면 알겠지만 jdk든 maven이던 여러버전을 복수개 설정하여 젠킨스에서 유동적으로 골라 사용할 수도 있다.
톰캣 배포용 플러그인 설치
젠킨스가 빌드한 결과물(war파일)을 톰캣에게 배포하려면 Deploy to container Plugin 플러그인이 필요하다.
Deploy to container Plugin 플러그인을 설치하자.
다시 jenkins 관리로 이동한 뒤, 플러그인 관리를 클릭하자.
설치 가능 탭으로 이동하여 필터에 deploy를 검색하여 Deploy to container Plugin을 찾아 설치하자.
안전성을 위해 플러그인 설치시 자동 젠킨스 재시작 옵션을 추가하도록 하자.
톰캣서버의 tomcat-users.xml 수정
젠킨스가 톰캣서버에 접근하여 빌드 결과물인 war를 배포하기 위해서는 톰캣에 접근할수 있는 계정이 필요하다.
톰캣서버의 관리자 계정을 만들어서 이 계정을 젠킨스에게 알려주면 된다.
톰캣이 설치되어 있는 서버에 /etc/tomcat/tomcat-users.xml 파일에 아래 내용을 추가하자.
tomcat-users라는 루트 태크 내부에 추가하면 된다.
톰캣의 관리자 계정은 admin / admin 으로 설정했다.
1 | <role rolename="manager-gui"/> |
톰캣을 리스타트 하자.
1 | systemctl restart tomcat |
젠킨스에 svn 빌드+배포 잡 생성
적절한 Job 이름을 입력하고, Freestyle project를 클릭한뒤 ok를 클릭하자.
그 다음에는 자세한 젠킨스 Job 설정화면이 탭으로 구별되어 나온다.
General 탭에는 딱히 설정 할 것이 없다. 넘어가자.
소스코드 관리 탭에서는 이 젠킨스 잡에서 빌드할때 가져올 소스코드의 위치인 SVN 경로를 설정해야 한다.
Subversion을 선택하고 SVN원격 리파지토리 URL과 리파지토리에 접근할수 있는 svn 계정정보를 입력하자.
svn계정은 read 권한만 있어도 된다.
Jenkins가 나오는데 그것을 클릭하면 아래처럼 젠킨스에서 계정정보를 관리하는 화면이 나온다.
젠킨스는 다양한 외부 시스템에 접속을 할 필요가 있는데, 그때 접속할 계정정보를 관리하는 화면이 이 화면이다.
입력을 끝내고 add를 누르면 소스 코드 관리 탭의 Credentials항목에서 입력한 계정을 선택 할 수 있다.
이글의 초반부에 설정한 maven을 선택하고 Goals에 maven 명령어인 clean install 을 입력하자.
빌드 후 조치 추가를 클릭하고 Deploy war/ear to a container 를 클릭하자.
container항목을 선택하고 배포서버의 tomcat 버전인 tomcat7을 골라주자.
빌드 후 조치에서는 빌드 결과물인 war파일을 tomcat 서버에 배포하기 위한 설정을 해야 한다.
배포 대상인 war파일을 위 이미지 처럼 설정하고, context path를 설정하자.
이 context path는 war의 url경로가 된다.
그리고 아까 tomcat에 설정한 톱캣 관리자 정보를 입력하자.
Tomcat URL은 배포가 되는 Tomcat서버의 URL을 입력하면된다.
입력이 끝났다면 저장하자.
이제 모든 준비가 끝났다.
만든 젠킨스 잡을 실행하여 maven 웹 프로젝트를 빌드하고 톰캣에 배포해보자.
젠킨스 빌드
톰캣서버에서 배포 결과를 확인
톰캣서버의 관리자 페이지로 이동해보자.
브라우저에 톰캣URL/manaver/html 을 입력하자.
젠킨스 잡 설정에서 입력한 context path가 생긴것을 확인할 수 있다.
브라우저에 톰캣URL/아까입력한contextpath를 입력해보자.
배포된 내용이 반영되어 동작하는 것을 확인 할 수 있다.
추가 : 빌드중 오류 발생
이번 실습에서 빌드중 발생한 오류내용을 추가한다.
젠킨스 잡에서 maven 빌드시 아래 오류메세지들이 발생했다.
오류 내용 :error: unmappable character for encoding UTF8
찾아보니 윈도우 환경에서 개발된 소스가 리눅스 환경에 빌드될때 발생하는 인코딩 문제라고 한다.
개발환경의 스프링 maven 프로젝트의 pom.xml에 UTF-8 인코딩 설정을 추가해야한다.
pom.xml 아래 내용을 추가한다.
일단 properties 항목에 아래 내용을 추가하자.
maven이 빌드할때 아래 프로퍼티를 참조하여 인코딩을 정한다고 한다.
1 | <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> |
그리고 maven-compiler-plugin 플러그인의 configuration에 아래 내용을 추가한다.
1 | <encoding>UTF-8</encoding> |
로컬에서 maven 빌드를 해보면 이제는 로컬에서 error: unmappable character for encoding UTF8 오류가 발생하는 것을 확인 할 수 있다.
개발도구인 STS(Spring Tool Suite) 또는 이클립스에서도 UTF-8 인코딩 설정이 필요하다.
그리고
Java Class File과 Text에 Default encoding을 UTF-8을 입력하고 update를 클릭하여 각각 인코딩을 적용하자.
주의할 점은 개발툴 UTF-8인코딩 설정을 하면 자바 파일등에서 기존에 작성한 한글등이 깨진다.
그 뒤 로컬에서 maven 빌드시 빌드 성공 확인!!!
이제 수정된 내용을 SVN에 commit하고 젠킨스에서 다시 빌드+배포잡을 돌리자.
젠킨스에서 오류없이 빌드+배포 되었으며 tomcat에서 결과를 확인 했다.
끝!!!