[LG CNS AM Inspire CAMP 1기] MSA (10) - DevOps와 CI/CD (Jenkins, Tomcat)

니니지·2025년 3월 20일

LG CNS AM Inspire Camp 1기

목록 보기
42/47


INTRO

* docker로 jenkins 실행 명령어
docker run -d -p 8088:8080 --name jenkins-server --restart=on-failure --volume jenkins_home:/var/jenkins_home jenkins/jenkins:latest-jdk21
docker exec -it jenkins-server bash
cd /var/jenkins_home/

* docker로 tomcat 실행 명령어
docker run -d -it -p 8888:8080 --name tomcat tomcat:9.0.102-jdk21-corretto
docker run -d -it -p 8888:8080 --volume C:\Work\shared:/work/shared --name tomcat tomcat:9.0.102-jdk21-corretto
docker exec -it tomcat bash

1. Jenkins 설치 (port:8088)


- admin pw 조회

초기에만 필요한 정보. 이후엔 계정 생성하여 기동.

아래 화면에서 설치가 잘 안되더라도 jenkins 기동은 되기 때문에 추 후 내부에서 필요한 플러그인을 설치하면 됨.

admin/test1234/administrator

- JDK installations

경로만 매칭

- Maven installations

install automatically 체크

2. Jenkins job 생성

- freestyle/maven job

  • maven 플러그인이 없는 상태: freestyle job으로 생성.
  • maven 플러그인 설치 후 maven 으로 job을 생성함.

- build steps

  • 빌드 시 test 용도로 echo 명령어 입력

- 소스 코드 관리

  • 레포지토리 주소와 브랜치 명 입력

- 빌드

3. 빌드 (지금 빌드)

- 빌드 상태 확인 (로그)


- 대시보드 확인

- bash 확인

4. Jenkins 플러그인 설치

5. target 위치

docker exec -it jenkins-server bash
cd /var/jenkins_home/workspace/{job 이름}/target

이 안에는 war 파일이 존재. (war는 tomcat 서버가 있어야 실행 가능)

6. tomcat 설치 (port:8888)

docker run -d -it --rm -p 8888:8080 --name tomcat tomcat:9.0.102-jdk21-corretto

- 8888 접속 시 첫 화면 셋팅

  • 404 error는 8888 접속 시 첫 화면이 없기 때문에 뜰 수 있음.
  • 해결을 위한 명령어 모음
    docker exec -it tomcat bash 에서 작업 진행
  • 8888 재접속 시 톰캣 홈페이지가 뜸.
  • tomcat webapps 구조

- manager app 접근 권한 허용

  • 403 access denied 뜨는 걸 해결하기 위한 방법
    -> id, pw 입력하여 role 별로 접근 가능하도록 설정.

[conf 에서 role 설정]

docker exec -it tomcat bash
cd /usr/local/tomcat/conf
vi tomcat-users.xml

ESC
ESC -> :set nu (라인 넘버 보이기)
i (Editor 모드(i,a,o) > insert 모드로 전환)
ESC -> :wq (저장 후 닫기)      (/ 검색, :q 종료, x 단어삭제, d 줄삭제)


[role 에 대한 context 설정]

  • 8번 appendix 강의자료 14p 참고.

  • 재접속 시 role 계정으로 접근 가능

7. 로컬 war 파일 tomcat에 배포

- 테스트 프로젝트 깃 클론


- tomcat 에서 war 배치



- 파일 수정 후 war 재배치


톰캣 중지 > 제거 > 업로드(war) > 배치 > 실행 > 수정 내용 확인 가능

- war 만 있으면 폴더가 자동으로 생성 됨.

8. Jenkins war 파일 tomcat에 배포

- 구성 > '빌드 후 조치' 수정

- credentials

  • manager-script 권한을 가진 계정으로 접속.

- tomcat 확인


  • 이후로는 깃에 커밋된 내용이 바로 보여짐.
  • 알림 주는 기능 / 자동 빌드 시간 셋팅 / 주기적으로 업데이트 확인 및 반영 기능이 있음.

9. Jenkins와 Tomcat의 CI/CD

- Continuous Integration (CI, 지속적인 통합)

  1. 코드 변경 감지
    • 개발자가 GitHub, GitLab, Bitbucket 등의 Git 저장소에 푸시(push) 하면 Jenkins가 변경을 감지.
  2. 코드 빌드 & 테스트
    • Jenkins가 Maven 또는 Gradle을 사용하여 코드를 빌드하고 테스트 실행.
    • Java 프로젝트의 경우 보통 Maven(mvn package) 을 사용하여 .war 파일 생성.
  3. 테스트 실행
    • 유닛 테스트 (JUnit, TestNG 등)를 실행하여 코드의 정상 동작 확인.

- Continuous Deployment (CD, 지속적인 배포)

  1. 빌드된 .war 파일을 Tomcat에 배포
    • Jenkins가 SCP(Secure Copy), FTP, 또는 Tomcat Manager API를 사용하여 Tomcat의 webapps/ 폴더에 자동 배포.
    • 보통 curl 명령어 또는 deploy 스크립트를 이용.

2.배포된 애플리케이션 실행

  • Tomcat이 .war 파일을 인식하고 자동으로 배포하여 실행.
  1. 배포 완료 후 모니터링
    • 배포가 완료되면 Jenkins가 애플리케이션이 정상 동작하는지 확인.

10. 실습 과제

(1) 깃허브 코드 복사 & 내 레포지토리에 업로드

git clone https://github.com/joneconsulting/cicd-web-project.git
cd C:\Work\git\cicd-web-project

git remote remove origin  # 기존 강사 깃허브 원격 저장소 삭제
git remote add origin https://github.com/hanzyn09/cicd-my-web-project.git  # 내 깃허브 저장소 연결
git branch -M main  # 브랜치 이름을 main으로 변경
git push -u origin main  # 내 레포지토리에 코드 업로드

(2) 젠킨스 프로젝트를 내 깃 레포로 변경

(3) index.jsp 수정 후 깃 커밋 & 푸시

git add .
git commit -m "index.jsp 수정"
git push origin main

(4) Jenkins 빌드 테스트

profile
지니니

0개의 댓글