Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
Tags
- turbo
- dfs
- docker
- LLM
- React
- 파이썬
- build
- frontend
- BFS
- modbus
- ansible
- queue
- 프로그래머스
- OpenAI
- rag
- VectoreStore
- javascript
- Two Pointer
- heapq
- typescript
- javascirpt
- Infra
- monorepo
- DP
- python
- 알고리즘
- AI
- jenkins
- CI/CD
- Algorithm
Archives
- Today
- Total
DM Log
[CI/CD #2] Jenkins를 이용한 CI/CD 사용 본문
CI/CD를 위한 GIT, Maven 설정
- CI/CD의 핵심은 소스 관리(Git) 와 빌드 자동화(Maven)
- Jenkins가 이 둘을 인식하고 자동화하려면 플러그인과 전역 설정이 필요
Jenkins Git Plugin 설정
플러그인 설치
- Jenkins 관리 → Plugin Manager → Available
- Git, Git API Plugin 설치
- 설치 후 Jenkins 재시작
Global Tool Configuration에서 Git 설정
- Jenkins 관리 → Global Tool Configuration
docker exec -ti jenkins-server bash
git --version
Jenkins Maven Plugin 설정
플러그인 설치
- Jenkins 관리 → Plugin Manager → Available
- Maven Integration plugin 설치
Maven 전역 설정
- Jenkins 관리 → Global Tool Configuration
- “Maven” 추가 후, 버전 입력 또는 자동 설치 설정
docker exec -ti jenkins-server bash
mvn --version
프로젝트 생성 및 Git + Maven 연동
- Item 생성
- Dashboard → “New Item” → Maven project 선택
- 소스 코드 관리
- Git Repository URL 입력 (https://github.com/...)
- Build 설정
- Root POM: pom.xml
- Goals: clean compile package
- 결과 확인
- 빌드 완료 후 “Workspace” 탭에서 산출물 확인
- .jar 또는 .war 파일이 Docker 내부 workspace 폴더에 생성됨
Local Tomcat 서버 설정
- CI/CD의 최종 배포 환경으로 Tomcat을 사용
Tomcat 설치
- 공식 다운로드: https://tomcat.apache.org
- 버전: Tomcat 9.x
- JDK 필요 → OpenJDK 11 설치 OS명령어
JDK 11 Releases
JDK 11 Releases The JDK 11 Early Access Program has concluded. Please visit Java SE Downloads for production ready builds. Older releases, which do not include the most up to date security vulnerability fixes and are no longer recommended for use in produc
jdk.java.net
Tomcat 실행
시작명령어:
| Windows | .\bin\startup.bat |
| macOS/Linux | ./bin/startup.sh |
종료 명령어:
| Windows | .\bin\shutdown.bat |
| macOS/Linux | ./bin/shutdown.sh |
Tomcat 설정 변경
- 포트 변경
- 파일: conf/server.xml
- 예: <Connector port="8081" ... />
- 접근 권한 변경
- webapps/manager/META-INF/context.xml
- webapps/host-manager/META-INF/context.xml
→ <Valve> 주석 처리로 접근 제어 해제
- 관리자 계정 추가 (tomcat-users.xml)
<role rolename="manager-gui" />
<role rolename="manager-script" />
<role rolename="manager-jmx" />
<role rolename="manager-status" />
<user username="admin" password="admin" roles="manager-gui, manager-script, manager-jmx, manager-status"/>
<user username="deployer" password="deployer"
roles="manager-script"/>
<user username="tomcat" password="tomcat" roles="manager-gui"/>
Jenkins → Tomcat 자동 배포 설정
Deploy to Container Plugin 설치
- Jenkins 관리 → Plugin Manager → Available
- Deploy to Container Plugin 설치
- Jenkins 재시작 후 Jenkins 관리 → Global Tool Configuration → Deploy to container 설정 가능
Jenkins에서 Tomcat 배포 구성
- Item 생성
- Maven Project 선택
- Git Repository 입력
- Build Goals: clean compile package
- Post-build Actions 추가
- Deploy war/ear to a container 선택
- WAR 파일 경로: **/*.war
- Container: Tomcat 9.x 선택
- Credentials 등록 (admin:admin)
- Tomcat 주소 입력
→ Jenkins가 Docker 내부에 있으므로 호스트 이더넷 IP:8080 입력 필요
- 배포 확인
- Tomcat의 /webapps 폴더 내 .war 파일 확인
- 브라우저에서 http://<호스트IP>:8080/프로젝트명 접속 확인
지속적 파일 업데이트 (PollSCM)
Jenkins 자동 감지 빌드 트리거
- Jenkins 프로젝트 → Configure → Build Triggers
- 스케줄링 옵션:
- Build periodically: 변경 없어도 특정 주기로 빌드
- Poll SCM: Git 변경 발생 시 자동 빌드
- 예시→ 매 분마다 변경 여부 확인 (테스트용)
* * * * *
- 테스트
- Git에 새로운 커밋 푸시
- Jenkins가 자동 빌드 수행하는지 확인
ssh + docker 설치 vm 사용
Jekins에서 SSH 설정
- 플러그인 설치
- Publish Over SSH 플러그인 설치
- SSH 서버 등록
- Jenkins 관리 → Configure System → SSH
- Name, Host(IP), Password, Port(기본: 22 또는 VM의 외부 포트) 입력
- Docker VM의 IP 확인 → docker inspect docker-server | grep IPAddress
Docker SSH Container 세팅
- Docker window ssh image 설치 및 실행 (password 설정)
docker run --privileged --name docker-server -itd -p 10022:22 -p 8081:8080 -e container=docker -v /sys/fs/cgroup:/sys/fs/cgroup edowon0623/docker:latest /usr/sbin/init
docker exec -it docker-server bash
yum install -y passwd
passwd
- Docker window 내부 Docker 실행
systemctl enable docker
systemctl start docker
Jenkins에서 빌드 후 SSH 배포
- Jenkins 프로젝트 → Configure → Post-build Actions
- “Send build artifacts over SSH” 추가
- 설정 항목:
- Source files: .war 파일 경로
- Remove prefix: 제외할 폴더 경로
- Exec command:
docker build --tag=cicd-project -f Dockerfile . docker run -p 8080:8080 --name mytomcat cicd-project:latest
- Jenkins 빌드 후 SSH를 통해 Docker VM에서 컨테이너가 자동 생성 및 실행
'개발공부 > Infra' 카테고리의 다른 글
| [CI/CD #6] Jenkins + Ansible + Kubernetes 연동 (0) | 2025.11.01 |
|---|---|
| [CI/CD #5] Docker Desktop Kubernetes 사용 (0) | 2025.11.01 |
| [CI/CD #4] Jenkins + Ansible 연동 (0) | 2025.10.29 |
| [CI/CD #3] Infrastructure as Code 개요와 Ansible의 이해 (0) | 2025.10.28 |
| [CI/CD #1] DevOps와 CI/CD 이해 (feat. Jenkins) (0) | 2025.10.25 |
