$ sudo apt update
$ sudo apt install -y tomcat9 tomcat9-admin
$ systemctl status tomcat9
Tomcat Manager API를 사용하기 위한 계정 설정
**$ sudo vim /etc/tomcat9/tomcat-users.xml
...**
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<user username="admin" password="P@ssw0rd" roles="manager-gui, manager-script, manager-jmx, manager-status"/>
</tomcat-users>
외부에서 tomcat에 배포를 위한 권한을 갖는 사용자 설정
tomcat9 서비스 시작
$ sudo systemctl start tomcat9
$ systemctl status tomcat9.service
● tomcat9.service - Apache Tomcat 9 Web Application Server
Loaded: loaded (/lib/systemd/system/tomcat9.service; enabled; vendor p>
Active: active (running) since Thu 2025-11-06 01:16:48 UTC; 4min 36s a>
Docs: https://tomcat.apache.org/tomcat-9.0-doc/index.html
Process: 2081246 ExecStartPre=/usr/libexec/tomcat9/tomcat-update-policy>
Main PID: 2081250 (java)
Tasks: 34 (limit: 2908)
Memory: 113.1M
CPU: 20.397s
CGroup: /system.slice/tomcat9.service
└─2081250 /usr/lib/jvm/default-java/bin/java -Djava.util.loggi>

http://192.168.56.21:8080/manager/html
위에서 설정해준 아이디, 비밀번호
<user username="admin" password="P@ssw0rd" roles="manager-gui, manager-script, manager-jmx, manager-status"/>

젠킨스 접속 192.168.56.11:8080
Jenkins 관리 → plugins → Available Plugins
deploy to container 설치

jenkins가 tomcat에 접근하기 위한 로그인 정보 등록

second에서 구성으로 이동 후 build settings에서 설정


빌드
http://192.168.56.21:8080/hello-world
404 not found 에러시 파일 수정
$ sudo vim /var/lib/jenkins/workspace/second/src/main/webapp/index.jsp
hello world
$ sudo chown jenkins:jenkins /var/lib
/jenkins/workspace/second/src/main/webapp/index.jsp
직접 만든
index.jsp는 github, jenkins와 상관 없는 내용
tomcat이 war 파일을 언팩을 진행할 때 다음 중 하나를 선택
war 파일만 새롭게 넣고 기존 폴더는 놔두는 방식war를 다시 풀어내는 방식jenkins는 단순 빌드만 하는 도구가 아님
→ CI/CD 지속적 배포를 하기 위한 도구
⇒
지속적 배포를 위해서는 파이프라인이 필요
소스코드를 가져와서 빌드 -> 테스트 -> 배포 과정을 Jenkinsfile로 표현한 것(자동화 스크립트)
왜 사용하는가?
실질적인 파일 작성 시의 문법 알아보기
일단 최상위 개체로써 항상 설정하는 pipeline 블록이 있으며 그 아래 섹션과 지시어를 소개
agentpoststagesstepsenvironment키=값 형태로 정의optionsparameterstriggerscron / pollSCM / upstream 방식 가능stagetoolswhen레포 생성 및 세팅

파일 업로드 후 커밋

pipeline {
agent any
triggers {
pollSCM('* * * * *')
}
stages {
stage('Checkout') {
steps {
git branch: 'main',
url: '<URL>'
}
}
stage('Build') {
steps {
sh 'mvn clean package'
}
}
stage('Deploy') {
steps {
deploy adapters: [tomcat9(credentialsId: 'tomcatmanager', url: 'http://192.168.56.22:8080')], contextPath: null, war: 'target/hello-world.war'
}
}
}
}
git 설치
$ sudo apt update
$ sudo apt install -y git-all
톰캣 설치 및 관리자 계정 세팅
위 참고
$ git config --global user.name dltnals1210
$ git config --global user.email dltnalstnals14@gmail.com
$ mkdir maven
$ cd maven/
$ git init
$ git remote add origin https://github.com/dltnals1210/source-maven-java-spring-hello-webapp.git
$ git pull origin main
$ vim Jenkinsfile
pipeline {
agent any
triggers {
pollSCM('* * * * *')
}
stages {
stage('Checkout') {
steps {
git branch: 'main',
url: 'https://github.com/dltnals1210/source-maven-java-spring-hello-webapp.git'
}
}
stage('Build') {
steps {
sh 'mvn clean package'
}
}
stage('Deploy') {
steps {
deploy adapters: [tomcat9(credentialsId: 'tomcatmanager', url: 'http://192.168.56.22:8080')], contextPath: null, war: 'target/hello-world.war'
}
}
}
}
$ git add .
$ git commit -m "my first pipeline"
$ git push -u origin master
파이프라인 생성


$ vim src/main/webapp/index.jsp
hello world
$ git add .
$ git commit -m "index.jsp"
$ git push -u origin master
pr 생성 후 머지