CI CD InfraStructure/Jenkins

[Jenkins] Maven프로젝트 생성 및 Git코드 Build 후 Tomcat 배포

유혁스쿨 2023. 7. 7. 19:13
728x90
반응형

1. 새로운 Item 선택

2. Maven Project 생성

이름을 입력하고 하단에 Maven 플러그인이 설치되어 있으면 Maven project를 볼수있다.
Maven Project를 선택한 뒤 OK버튼을 클릭한다.
 

3. Git 정보 입력

Credential은 Git Repository가 Private일 경우 권한을 설정하는 옵션이다.
public Repository이므로 계정에대한 권한없이 사용할 수 있다.
따라서 현재는 추가로 설정하지 않는다.
 

4. Build 설정

하단의 Build로 이동하여 Goals 옵션을 지정해준다.

Root POM에는 pom.xml이 입력되어있다.
pom.xml파일을 기반으로 Maven빌드가 진행된다.
 
그 다음으로 어떤 항목들로 Build할지에 대한 지정을 Goals and options에 지정한다.

  • clean : 기존에 Build한적이 있으면 기존 파일을 삭제후 새롭게 Build
  • compile : Build 새롭게 시작
  • package : compile 되어진 내용을 통해 pom.xml파일에 지정된 옵션에 따라서 package파일을 만든다.
    (war파일/ jar파일 두가지 형태)

자바 패키지파일 유형

  • war :  WAS 서버에 패키지파일을 복사해서 구동시킬수 있게끔 하는 확장자 (톰캣이 없다.)
  • jar : 스프링부트 - Embadded 내장 톰켓을 프로젝트 내부에 가지고있음.

 
 

5.  빌드 후 조치 설정

빌드 후에 어떤 작업을 할것인지 설정한다.
 

5-1) 제일 마지막 으로 이동하여 [빌드 후 추가]를 선택한다.

Deploy war/ear to a container를 선택한다.

Deploy war/ear to a container란 빌드 이후 war/ear 확장자로 패키징 되어있는 파일을 Container에 배포하겠다는 옵션
 
 

5-2) WAR/EAR file :  Tomcat WebServer에 복사하고자 하는 war파일의 패턴을 입력한다.

현재 압축을 한 파일의 위치에서 어떠한 파일을 복사할 것인지 지정한다.

**/*.war : 현재 디렉토리와 그 하위 디렉토리를 포함하여 .war확장자를 가진 파일을 배포 대상으로 둔다.
 
 

5-3. Tomcat 컨테이너 추가

어떠한 WAS 컨테이너에 배포할것인지 WAS컨테이너 추가

Tomcat 9버전으로 설정한다.
 

5-4. Jenkins Credentials 추가

Jenkins에서 로컬 Tomcat 서버에 접근할 수 있는 (Deploy 할 수 있는) 권한이 있어야한다.
현재 Jenkins에는 Tomcat 계정을 가지고있지 않으므로 Add를 선택하여 추가할 수 있는 Tomcat 사용자 계정을 입력한다.

 
이전에 로컬 Tomcat디렉토리의 conf 폴더하위 tomcat-users.xml 파일에 Tomcat의 계정과 권한을 아래와 같이 부여했었다.
 

 
해당 계정과 권한을 참고하여 아래와 같이 설정한 deployer 계정 정보를 입력한다. (Username, Password, ID, Description)

ADD버튼을 눌러 추가한 뒤 아래와 같이 Credentials에서 방금 추가한 deployer을 선택한다.

 

5-5. Tomcat URL 추가

 
Jenkins내부에서 해당 URL을 찾으려고한다.
127.0.0.1로 지정하면 Jenkins가 가지고있는 8080포트를 찾으려고 한다.
Windows에서 Tomcat에 접속할 때 127.0.0.1:8080으로 Access하여 접속하는데,
Jenkins의 경우 Docker엔진에 Docker형태로 기동시킨 상태이고 127.0.0.1:8080으로 기동시켜놨다고 가정하고
 
하지만 사용자가 Docker에 Jenkins를 -p 8080:8080으로 Mount해서 실행했다면
Jenkins에서 톰캣을 접속할때 자신이 가지고있는 경로로 인식해버린다.
따라서 동일한 IP와 포트이기 때문에 Jenkins로 접속하게되기 때문에 Tomcat을 기동시킬수 없는 문제를 유발시킨다.
(필자의 경우 기동전 세팅을 8088로 Mount해놨기때문에 문제가 발생하지 않을거라 생각이 든다.)
 
결론적으로는 앞의 IP주소를 로컬 IPv4 Address를 아래와 같이 입력해야한다.
 

위와같이 입력한 후 저장버튼을 클릭한다.
 

6. 생성된 프로젝트 빌드 후 

이후 지금 빌드를 선택하여 생성한 프로젝트 빌드를 진행한다.
 
 

 
빌드가 되었다는것은 war파일이 생성되었다는 것이다.
콘솔의 Building war 로그에 출력되는 경로를 확인해보면 /var/jenkins_home/workspace/My-Third-Project/target 디렉토리 하위에 hello-world.war파일이 생성되었다는것을 확인할 수 있다.
 

11. 톰캣서버에 배포

 
cmd에서 Tomcat 서버가 설치되어있는 경로로 이동하고 dir 커맨드를 입력해서 목록을 확인한다.

> dir

목록에 존재하는 webapps에 war파일이 있는지 찾아본다.

> cd webapps
> dir

hello-world.war파일이 jenkins로부터 복사가 된것을 확인할 수 있다.
 
Tomcat Server에 war파일이 잘 복사가 되면 정상적인 application파일일 경우 파일명과 동일한 형태의 폴더가 함께 생긴다.
 
 

12. Tomcat 웹 애플리케이션 매니저에서 확인해보기.

 
톰캣 서버로 접속해서 우측 ManagerApp 버튼을 클릭하면 Tomcat 웹 애플리케이션 매니저에 접속된다.
 

 

13. 톰캣 서버 기동

apache-tomcat-9.0.35>.\bin\startup.bat

위 명령어를 로컬에 설치된 톰캣 폴더경로까지 진입한뒤 입력하면 Tomcat이 기동된다.
 
기동후 /hello-world를 클릭하면 접속이된다.

728x90
반응형