코딩하는 문과생
[AWS] Jenkins를 이용한 자동화 배포, CI/CD 본문
[서론]
CI/CD 중요도가 날로 갈수록 중요해지고 있다.
팀에서도 젠킨스를 사용하여 빌드 및 배포중이었고, 좀 더 나은 방식을 고민하다가 CI/CD 와 관련된 온라인 강의를 수강하였다. 해당 강의는 로컬에서 도커컨테이너와 쿠버네티스를 이용하여 CI/CD를 구축하고, 마지막 부분에서는 AWS에 Jenkins와 Ansible, Docker 등 서비스를 올려 배포를 진행한다.
강의를 마무리하는 단계에서 마지막 내용만 간략하게 정리해보고자 한다.
아키텍처는 다음과 같다.

1. GIT에 커밋하면 Jenkins가 자동으로 빌드하여 war 파일을 만든다.
2-1. 바로 tomcat-server(tomcat 9 버전 설치)에 war 파일을 배포하여 서비스 운영
2-2. war + tomcat9를 도커 이미지로 만든 후, ansible playbook을 이용하여 docker-server에 배포
강의에서는 1. tomcat이 설치된 인스턴스에 배포하는 과정과, 2. 도커이미지로 만들어 도커 컨테이너에 서비스를 올리는 두 방법을 제시한다. 해당 글에서는 2번 과정만 간략히 정리하는 글이다.
모든 내용을 담고 있지는 않으며(가령, amazon linux extras 확장팩 설치, java 호환 문제로 jenkins 설치 시 openjdk 로 변경, tomcat 관리를 위한 유저 설정 등), 흐름만 간단히 기억하기 위해 정리하는 글이다.
1. 인스턴스 생성
- JDK11설치

2. 젠킨스 서버에 젠킨스 설치 후, 구성 설정
2-1. Repo의 소스코드로 빌드 진행

2-2. war 파일로 빌드파일 생성
- 이때 젠킨스가 있는 서버에 war 파일이 생성된다.

2-3. docker server로 war파일을 보내서, 빌드 이미지 생성(Tomcat9 + war)

Dokerfile
FROM tomcat:9.0
COPY ./hello-world.war /usr/local/tomcat/webapps
2-4. ansible-server에서 docker-server로 playbook을 실행시켜 도커 컨테이너에 도커 이미지를 배포한다.

create-cicd-devops-container.yml
- hosts: all
tasks:
- name: stop current running container
command: docker stop my_cicd_project
ignore_errors: yes
- name: remove stopped container
command: docker rm my_cicd_project
ignore_errors: yes
- name: create a container using cicd-project-ansible image
command: docker run -d --name my_cicd_project -p 8080:8080 sijune0525/cicd-project-final
3. 빌드
구성완료 후, Jenkins 서버에서 "지금 빌드" 누르면 git Repo에 있는 소스코드가 배포된다.



참고자료
Jenkins를 이용한 CI/CD Pipeline 구축 - 인프런 | 강의
본 강의는 클라우드 네이티브 애플리케이션을 구성하는 4가지 핵심 요소(MSA, CI/CD, DevOps, Container) 중 하나인 CI(Continuous Integration, 지속적인 통합)과 CD(Continuous Deployment, 지속적인 배포) 파이프라...
www.inflearn.com
'개발 관련 지식 > AWS' 카테고리의 다른 글
[AWS] Error: 날 빡치게 만든 Nginx... (0) | 2020.03.06 |
---|---|
[AWS] Error: IntelliJ와 RDS 데이터 연동 문제 (0) | 2020.03.06 |
[AWS] Error: 포트가 이미 사용 중입니다. (0) | 2020.03.05 |
[AWS] springboot pjt 배포 시 메모리 부족 현상 (1) | 2020.03.04 |
[AWS] RDS (0) | 2020.01.04 |