Programming/Jenkins

Jenkins를 이용한 CI/CD 구축 (spring, docker, nginx, docker) 0

LazyCat 2024. 11. 12. 17:10
반응형

🤍 내가 이해한 CI/CD의 개념

1. CI

Continuos Integration은 지속적인 통합을 의미합니다. 

개발자가 코드 변경 사항을 공유 소스 코드 리포지토리에 자주 통합하는 사례가 CI에 해당됩니다.

 

2. CD
Continuous Deploy는 지속적인 배포를 의미합니다.

개발자가 작성한 코드를 배포 준비를 하고, 환경에 배포하는 단계입니다.

 

 

🤍 우리 프로젝트의 전반적인 CI/CD 프로세스

먼저, 제가 jenkins를 사용하기 전에

수동으로 우리 프로젝트를 빌드하고 배포하던 과정을 설명드리겠습니다

 

1. AWS EC2 에 접속

2. 루트 폴더 아래에 있는 backend 폴더로 이동

cd backend

3. 최신 커밋을 내려받음 (test branch로 고정함)

git checkout test // test 브랜치로 이동
git pull

4. 프로젝트 빌드

./gradlew --stop
./gradlew clean build

5. Docker 파일 빌드

docker build -t homealone . // 도커 이미지 생성

6. EC2 루트 경로로 이동

cd ../

7. 도커 컨테이너실행

docker-compose up

docker-copmose.yml에 작성된 설정에 따라서 여러가지의 Docker Container를 실행하는 명령어

 

 

이 과정에서

CI는 3단계(코드 pull), 4단계(프로젝트 빌드)에 해당되고

CD는 5단계(Docker 이미지 생성), 7단계(Docker 컨테이너 생성)에 해당됩니다.

 

 

🤍 Trouble Shotting

우리 프로젝트에 Jenkins를 적용하는 과정에서 발생했던 문제들이 몇 가지 있습니다.

 

1. 젠킨스 로그인 페이지로의 리다이렉트 문제

 

Jenkins로 이동하기 위한 default URI는

http://{EC2 elastic IP}:8080/login?from=%2Fjenkins 입니다.

 

그러나 우리 프로젝트는 Elastic IP에 도메인을 연결하고

Login API가 /login이였기 때문에

해당 링크는 우리 프로젝트의 로그인 화면으로 이동시켰고 젠킨스를 사용할 수 없게 만들었습니다.그러나 생각보다 간단한 방법으로 해결됐습니다.

 

2. Jenkins Pipeline 빌드 실패

/var/jenkins_home/workspace/homealone@tmp/durable-d0e2fcb3/script.sh.copy: 1: docker: not found

Jenkins 컨테이너 내부에 Docker CLI를 설치하지 않아 발생했습니다.

 

여러 트러블 슈팅들은 Jenkins를 이용해여 CI/CD를 구축하는 방법을 모두 작성하고 번외편으로 만들어보겠습니다!

 

 

 

 

 

요새 너무 바빠서 티스토리를 관리할 시간이 별로없네요😓

 

그치만 힘을내서!!

 

다음편부터 Jenkins를 이용하여 1단계부터 7단계까지

자동화를 구축하는 과정을 설명드리겠습니다😎

반응형