Search
Duplicate
📒

[Jenkins] 02-2. 젠킨스 CI/CD 구축(Maven, Docker in Docker)

상태
완료
수업
Jenkins
주제
기본개념
4 more properties
참고

CI/CD를 위한 Git, Maven 설정

NOTE
Git에 있는 Spring의 Maven을 빌드해서 배포해보자!
Jenkins 관리 → 플러그인 관리 → 설치 가능목록
Jenkins 관리 -> Global Tool Configuration -> maven

maven build 실습

NOTE
Mavne으로 프로젝트 생성
깃허브 링크과, main 브랜치를 설정한다.
cicd-web-project
scofe97
깃허브 파일에 있는 pom.xml을 빌드하고, clean compile package 과정 거침
Root POM
maven 관련 설정파일 기반으로 빌드
Goals and options
clean : 이전 빌드 삭제
compile : 컴파일
package : 컴파일된 내용을 가지고 pom.xml 파일에 지정된 옵션을 따라서 package 파일을 생성한다
최종적으로 build 성공 후 workspace에 build 결과물 webapp.war 생성

Tomcat 서버를 사용한 배포(publis over ssh)

NOTE
Tomcat을 Docker에 올리고 로컬에서 확인해보자!
아키텍쳐 구상도 jenkins에서 localhost가 아닌, 서버의 ip로 통신시켜야 함을 기억하자!
Depoly to container 설치
Deploy war/ear to a container
패키징된 파일을 컨테이너에 배포
**/*.war
현재 디렉토리 하위 파일 중 확장자가 war인 파일 선택
Credentials
톰캣 서버에 war파일을 배포하기 위해서는 톰캣 서버에 접근할 수 있는 (Deploy 가능한) 권한이 있어야한다.
Git에 있는 hello-world가 빌드되어서 출력된걸 볼 수 있다.

PollSCM 설정을 통한 지속적인 파일 업데이트

NOTE
Git이 push되면 자동으로 build되게 해주는 프로그램을 쓰자!
실시간(1분간격)으로 git의 commit을 감지한다!
Build periodically
코드에 변경사항이 없어도 일단 빌드
Poll SCM
업데이트를 할 떄 커밋에 대한 내용이 있는 경우에만 빌드
현재 * * * * *은 거의 실시간으로 커밋을 감지하고 빌드한다는 의미

Tomcat 이미지를 사용한 배포(Docker containeh)

NOTE
Docker를 다른서버라 생각하고, 거기에 톰캣을 올린다고 생각하자.
docker-server 설정
배포설정
.war파일을 SSH를 이용해서 복사한다
Dockerfile + .war을 조합해서 Docker Image를 빌드한다.
Docker Image를 통해서 컨테이너를 생성한다.

실습

# 도커서버 생성 docker run --privileged --name docker-server \ -itd -p 10022:22 -p 8082:8080 \ -e container=docker \ -v /sys/fs/cgroup:/sys/fs/cgroup:rw \ --cgroupns=host edowon0623/docker-server:intel /usr/sbin/init ssh root@localhost -p 10022 # password:P@ssw0rd ( ssh 접속) systemctl status docker systemctl start docker # publish over ssh로 젠킨스에서 빌드한 파일(.war)을 도커서버로 전송 # Dockerfile 생성 FROM tomcat:9.0 COPY ./hello-world.war /usr/local/tomcat/webapps docker build -t docker-server -f Dockerfile . docker run -p 8080:8080 --name mytomcat docker-server:latest
Bash
복사
실습 코드(MacOs + intel chip 기준)