티스토리 뷰

로컬 서버가 아닌 테스트 서버에서 젠킨스를 이용하여 CI/CD를 해보겠습니다.

 

서버는 CentOS7 기준입니다.

 

다음과 같은 순서로 진행합니다.

 

  1. KTCloud를 이용하여 서버 구축(생략)
  2. 테스트 서버 내 톰캣(port80), JDK(1.8.x) 설치
  3. 테스트 젠킨스 서버 구축
  4. 테스트 서버 내 젠킨스를 통해 빌드업과 자동배포 진행
 

[Jenkins] CI/CD와 우리의 친절한 비서 Jenkins

젠킨스는 소프트웨어 개발 시 지속적으로 통합 서비스를 제공하는 툴입니다. CI(Continuous Integration) 툴 이라고 표현합니다. 젠킨스에 대해 알아보기 전에 우선 CI/CD에 대해 먼저 알아보겠습니다. CI

kingofbackend.tistory.com

 

[STEP1] 테스트 서버 내 톰캣(port80), JDK(1.8.x) 설치

war 파일을 자동 배포하기 위해선 톰캣 서버가 실행되고 있어야 하기 때문에 젠킨스를 설치하기 앞서 톰캣과 JDK를 설치하겠습니다. KT Cloud로 CentOS7 테스트 서버를 구축했고, 서버 내에 우선 자바(port80)와 JDK를 설치해주었습니다. 톰캣과 JDK 설치 방법은 이 글에선 다루지 않겠습니다. 구글링 하시면 쉽게 찾으실 수 있으실 겁니다.

 

 

[Linux] CentOS 7에 OpenJDK 1.8 설치하기

[STEP1] open-jdk 1.8 설치 # yum install java-1.8.0-openjdk # yum install java-1.8.0-openjdk-devel 설치가 완료되면 /usr/bin/경로에 java가 생성됩니다. * 참고 : 리눅스에서도 JDK와 JRE는 별도의 패키지..

kingofbackend.tistory.com

 

[Tomcat] 서버 내 tomcat 설치하기

로컬이 아닌 테스트 서버내 tomcat8 설치하는 방법에 대해 알아보겠습니다. 서버는 CentOS 기준입니다. 아주 기초적인 리눅스 명령어는 안다고 가정하여 진행합니다. [STEP1] Apach Tomcat 사이트 접속 Apa

kingofbackend.tistory.com

 

톰캣과 JDK가 문제없이 잘 설치되었다고 가정하겠습니다. 이제 젠킨스를 설치해주겠습니다.


[STEP2] 테스트 서버 내 젠킨스 설치

 

서버 내에 젠킨스 설치하는 방법은 아래 글을 참고하시길 바랍니다.

 

[Jenkins] 서버 내 Jenkins(젠킨스) 설치하기

테스트 서버 내 젠킨스 설치하는 방법입니다. 서버는 CentOS7 기준입니다. [STEP1] 젠킨스가 설치되어있는 확인하기 $ yum list installed | grep jenkins [STEP2] 젠킨스 설치하기 [STEP2-1] url에 해당하는 파..

kingofbackend.tistory.com


[STEP3] 젠킨스 설정하기

 

젠킨스가 잘 설치되었다고 가정하겠습니다.

 

http://서버ip:9100 로 접속합니다. 그럼 아래와 같은 화면이 나옵니다.

 

나중에 추가적으로 플러그인을 설치할 수 있으므로 우선 여기선 Install suggested plugins를 선택해줍니다.

 

그럼 기본 플러그인들이 설치가 됩니다.

 

계정을 생성해줍니다. 이 계정이 곧 Root 계정이므로 신중하게 작성하시길 바랍니다.

 

이미지는 8080으로 되어있는데 저는 9100입니다.

젠킨스 URL을 적어줍니다. 저는 http://서버IP:9100으로 넣어주었습니다.

Global Tool Configuration에 들어가서 아래와 같이 해줍니다.

install automatically로 인해 메이븐이 알아서 설치가 됩니다. 자동으로 해놓으면 추후 빌드 구성을 할때 maven을 자동으로 설치해줍니다.

 

플러그인 관리를 눌러줍니다.

Maven Intergation 플러그인을 클릭하여 설치 후 재시작을 해줍니다.

 

톰캣 서버 배포를 위한 플러그인을 설치합니다.

 

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

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


[STEP4] 톰캣 매니저에 접근

젠킨스에서 자동배포를 하기 위해선 톰캣서버 매니저에 접근해야합니다. 따라서 몇가지 수정을 해주겠습니다.

 

톰캣서버 tomcat-users.xml을 아래와 같이 수정해줍니다. <user> 부분의 username과 password는 뒤에 사용됩니다.

<!-- 젠킨스 톰캣서버 빌드를 위해 사용자계정 추가-->
<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="manager-gui,manager-script,manager-jmx,manager-status,admin-gui,admin-script"/>

 

/var/lib/tomcat-feadmin/apache-tomcat-8.5.69/webapps/host-manager/META-INF 으로 이동후 context.xml엽니다.

 

CookieProcessor와 Valve 부분을 주석처리 해줍니다.

 

/var/lib/tomcat-feadmin/apache-tomcat-8.5.69/webapps/manager/META-INF 으로 이동후 context.xml엽니다.

 

 

마찬가지로 주석처리 해줍니다.

 

ip주소:톰캣포트/manager/html 로 이동했을 때 아래와 같은 화면이 뜨면 됩니다.

 

 

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


[STEP5] Item 만들기

 

새로운 Item을 만들어줍니다.

메이븐 프로젝트를 생성해줍니다.

Git이 아닌 서브버전으로 할 것이기에 Subversion을 눌러줍니다.

Username에 SVN 계정 아이디를 넣어주고 Password에 SVN 계정의 비밀번호를 넣어줍니다.

 

Root POM을 작성하여 clean install을 작성해줍니다.

 

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

 

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

 

빌드 success 후 생성되는 war 파일의 위치를 WAR/EAR files에 넣어주고 Tomcat 7.x 관련 부분의 Credentials에는 tomcat-users.xml에서 작성한 username 정보를 넣어줍니다.

 

이로써 젠킨스 설정은 끝입니다.

 

그럼 다시 젠킨스 화면으로 돌아옵니다.


[FINAL STEP] CI/CD 

 

 

item중 하나를 눌러줍니다.

 

빌드 구성을 하면 젠킨스이 알아서 CI/CD를 수행합니다.

 

그럼 Build History에서 빌드 내용을 확인하실 수 있습니다. 체크를 눌러줍니다.

Console Output을 눌러줍니다.

 

BUILD SUCCESS는 이름대로 빌드 결과이고 Finished : SUCCESS는 배포 관련한 결과입니다. 둘 다 SUCCESS이면 성공적으로 빌드 및 배포를 하신 겁니다.


 

* 참고 : 젠킨스는 스프링 프로젝트 내 main/src/java 패키지 안에 있는 파일들만 빌드를 하기 때문에 main/src/test 패키지는 무시됩니다. 따라서 test내 java 파일은 import 할 수 없다는 에러가 발생합니다. 저처럼 삽질 하시지 마시기 바랍니다!!

 

* 참고 : 만약 빌드는 되는데 배포가 안된다면, 위에서 언급한 것처럼 톰캣 매니저가 들어가지는지 혹은 톰캣 배포한 서버가 잘 실행되는지 확인 하시기 바랍니다.

 

* 참고 : 스프링 프로젝트는 빌드되면 뒤에 1.0.0-BUILD-SNAPSHOT가 붙습니다. 아래 글을 참고하시면 안붙게 할 수 있습니다.

 

[Jenkins] war파일에 1.0.0-BUILD-SNAPSHOT 안붙게 하기

/var/lib/jenkins/workspace/ 로 이동 후 붙지 않게 하려는 프로젝트로 이동합니다. 톰캣이 아닌 젠킨스 내 workplace입니다. 프로젝트의 pom.xml에 아래와 같이 추가해줍니다. ..... ${project.name} .... 그 후..

kingofbackend.tistory.com

 

하시다가 안되는 부분이나 막하시는 부분이 있으면 언제든지 댓글로 남겨주세요 :)

댓글
댓글쓰기 폼
공지사항
Total
248,385
Today
760
Yesterday
1,065
링크
«   2022/10   »
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          
글 보관함