Jenkis로 CI/CD 구축하기 (1)

2025. 2. 8. 20:06TIL

 

CI/CD( Continuous Integration / Continuous Deployment )

 소프트웨어 개발 프로세스를 자동화하여 더 빠르고 안정적으로 배포할수 있도록 돕는 방법

 

Jenkins를 선택한 이유

 

HJ-CHAT 프로젝트의 CI/CD를 구축하면서 GitHub Actions, GitLab CI/CD 등 여러 가지 CI/CD 서비스가 존재하지만, 최종적으로 Jenkins를 선택하게 된 이유는 다음과 같다.

온프레미스 및 커스텀 환경 구축 가능

Jenkins는 완전히 자체 서버에서 호스팅할 수 있는 CI/CD 솔루션이기 때문에, 온프레미스 환경이나 AWS EC2와 같은 클라우드 인프라에서 직접 운영할 수 있다. 이는 HJ-CHAT 프로젝트의 배포 환경을 유연하게 설정하는 데 큰 장점이 된다.

다양한 플러그인 지원

Jenkins는 1,800개 이상의 플러그인을 제공하며, Docker, AWS, Kubernetes, Slack 알림, SonarQube 코드 분석 등과의 통합이 용이하다. 이를 통해 HJ-CHAT 프로젝트에서도 필요에 따라 CI/CD 환경을 확장할 수 있다.

GitHub Actions 대비 높은 커스터마이징 가능

GitHub Actions는 GitHub 저장소와의 강력한 연계를 제공하지만, Jenkins에 비해 제한적인 워크플로우 및 리소스 제약이 있다. 반면, Jenkins는 워크플로우를 세밀하게 조정하고 다양한 스크립트를 활용할 수 있어 프로젝트에 맞춘 최적의 CI/CD 구축이 가능하다.

 

HJ-CHAT 프로젝트에 CI/CD를 구축했을때 기대되는 효과

 

자동화된 빌드 & 배포 프로세스

Jenkins를 통해 코드가 변경될 때마다 자동으로 빌드, 테스트, 배포가 진행되는 파이프라인을 구축할 수 있다. 이를 통해 개발자가 직접 배포해야 하는 번거로움을 줄이고, 배포의 일관성을 유지할 수 있다.

배포 시간 단축 및 안정성 향상

수동 배포의 경우, 개발자가 직접 명령어를 실행하고 변경 사항을 확인해야 하지만, Jenkins를 이용하면 버튼 클릭 한 번으로 배포가 가능하다. 또한, 특정 브랜치에서만 배포가 이루어지도록 설정하여 안정성을 높일 수 있다.

테스트 자동화 및 품질 유지

Jenkins의 CI/CD 파이프라인 내에서 테스트 자동화가 가능하여 코드 변경 시 자동으로 유닛 테스트 및 통합 테스트를 실행할 수 있다. 이를 통해 코드 품질을 유지하고 배포 전 문제를 사전에 감지할 수 있다.

운영 환경과의 긴밀한 연계

Jenkins는 Docker 컨테이너 및 AWS 인프라(RDS, S3, EC2 등)와 쉽게 통합 가능하기 때문에, 현재 운영 중인 HJ-CHAT 프로젝트 환경과 원활하게 연동할 수 있다.

 

 

CI/CD 구축 과정

 

EC2에서 사용중인 메모리 용량 확인

 

메모리가 매우부족할것으로 보여 Swap Memory를 2gb로 늘려줘야한다.(프리티어이기 때문에 메모리가 1gb로 제한됨)

더보기

새로운 1G 스왑 파일 생성

sudo fallocate -l 1G /swapfile2

 

파일 권환 설정

sudo chmod 600 /swapfile2

 

스왑 영역으로 전환

sudo mkswap /swapfile2

 

스왑 활성화

sudo swapon /swapfile2

 

재부팅후에도 스왑 유지 설정 적용

echo '/swapfile2 swap swap defaults 0 0' | sudo tee -a /etc/fstab

 

스왑 메모리가 제대로 설정되었는지 확인

free -h

 

Jenkins ec2에 설치

 

GPG 키 등록

curl -fsSL https://pkg.jenkins.io/debian/jenkins.io-2023.key | sudo tee /usr/share/keyrings/jenkins-keyring.asc > /dev/null

 

Jenkins 저장소 추가

echo "deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] https://pkg.jenkins.io/debian-stable binary/" | sudo tee /etc/apt/sources.list.d/jenkins.list > /dev/null

 

패키지 목록 업데이트

sudo apt update

 

Jenkins 설치

sudo apt install jenkins -y

 

http://3.36.182.4:8080 에 접속

 

Jenkins 초기 비밀번호 확인

sudo cat /var/lib/jenkins/secrets/initialAdminPassword

 

 

 

설정을 완료하면 해당 페이지가 보이게 된다. (http://3.36.182.4:8080/)

 

'TIL' 카테고리의 다른 글

TIL 프로젝트  (1) 2025.02.17
Jenkins CI/CD (2)  (0) 2025.02.10
Kafka timeout 오류  (0) 2025.02.07
𝓓𝓮𝓼𝓲𝓰𝓷 𝓟𝓪𝓽𝓽𝓮𝓻𝓷𝓼  (1) 2025.02.05
𝓗𝓙-𝓒𝓗𝓐𝓣  (0) 2025.01.29