2025. 2. 8. 20:06ㆍTIL
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 |