Jenkins를 이용하여 local tomcat 서버에 배포하기

이상훈·2023년 6월 12일
2

CICD

목록 보기
4/10

jenkins를 docker engines에 docker 형태로 기동하고 jenkins를 통해 빌드된 war 파일을 tomcat 서버에 배포해보자.

tomcat 설치하기

1. tomcat 설치

아래 사이트에서 tomcat을 local에 다운받고 압축을 푼다.
https://tomcat.apache.org

여기서는 9.0.75 버전 다운

2. tomcat 서버 실행

다운 받은 apache-tomcat-9.0.75 폴더내의 bin 파일을 실행한다.

아래 명령어로 tomcat 실행

Windows) .\bin\startup.bat(실행) <-> .\bin\shutdown.bat (종료)
MacOS) ./bin/startup.sh(실행) <-> ./bin/shutdown.sh (종료)

위와 같이 정상적으로 tomcat 서버가 실행됨을 확인할 수 있다.

웹 브라우저 주소창에 localhost:8080을 입력하면 아래와 같은 화면이 나온다.


3. tomcat port 번호 바꾸기 및 권한 설정

현재 jenkins가 8080 포트를 사용하고 있으므로 tomcat 포트 번호를 8088로 바꿔보겠다. 다운받은 apache-tomcat-9.0.75의 conf 폴더의 server.xml 파일의 port 칸의 숫자를 8088로 바꾸면 된다.

그리고 webapps/manager/META-INF와 webapps/host-manager/META-INF 폴더내의 context.xml 파일 내에 127.... 부분을 주석 처리한다. 주석 처리함으로써 tomcat 서버에 어디에서나 다 접속할 수 있게 되었다.

마지막으로 conf의 tomcat-users.xml 파일 내에 아래와 같이 권한을 추가해준다.


Jenkins

jenkins를 통해 git에서 코드를 빌드 후 tomcat 서버에 빌드 파일인 war를 배포해보겠다.

1. 플러그인 설치

jenkins의 플러그인탭에서 Deploy to container Plugin 설치.

2. Item 생성

  1. Maven project 선택
  2. 소스 코드 관리에서 git을 선택한 다음 Repository URL 입력
  3. Build의 Root POM를 pom.xml로 선택, Goals and options를 clean compile package 입력

    clean : 앞서 빌드된거 지우기
    compile : compile
    package : 결과물을 war or jar로 패키징

  4. 빌드 후 조치 탭에서 Deploy war/ear to a container 선택
    • WAR/EAR files : */.war
    • Containers : Tomcat 9.x Remote
    • credentials 추가
      • username, password, id, description : tomcat 서버를 설치하고 설정했던 정보들을 입력
    • tomcat url 설정 : http://[windows/mac IP]:8088

      tomcat 서버를 설치할 때 8088로 설정했고 jenkins 자체는 도커 엔진에 도커 형태로 기동했고 8080을 배정받은 상태이다. 만약 jenkins 내부에서 127.0.0.1:8088로 접속하면 jenkins 내부에서 접속을 시도하려 하기 때문에 오류가 난다. 따라서 war 파일을 jenkins를 통해 tomcat 서버에 배포하려면 url에 http://[windows/mac IP]:8088를 입력해야 한다.

3. build후 확인

생성한 item을 build한다. 아래와 같이 정상적으로 tomcat 서버에 war 파일이 복사되었음을 확인할 수 있다.

웹 브라우저에서도 확인 가능하다.


+ Poll SCM 설정을 통한 지속적인 파일 업데이트

Poll SCM을 통해 깃허브에 변동사항이 생길 때마다 자동 업데이트할 수 있다.

  1. item의 configure의 빌드 유발 탭에서 Poll SCM을 체크한다음 schedule을 작성한다. 참고로 * * * * * 는 매초마다 변경 사항을 검사하겠다는 의미다.
  2. 코드를 수정하고 커밋, 푸시한다.
  3. Poll SCM을 통해 설정된 schedule를 통해 자동으로 파일이 빌드되어 tomcat 서버에 배포된다.

Poll SCM과 유사하게 Build periodically가 있다. Poll SCM은 변경 사항이 있을 때만 scheduler를 통해 빌드되지만 Build periodically는 변경 사항이 없어도 scheduler를 통해 주기적으로 업데이트된다.



참고

jenkins 접속 명령어
docker exec -it jenkins-server bash

profile
Problem Solving과 기술적 의사결정을 중요시합니다.

0개의 댓글