이번 프로젝트에서는 처음으로 젠킨스(Jenkins)
를 이용하여 CI/CD를 구축했습니다.
여태까지, Travis CI
나 GitHub Actions
를 사용하여 CI/CD를 구축했는데, 어떤 식으로 구축을 했는지 기억이 안났고 어떤 식으로 동작하는지 제대로 몰랐기 때문에 이번에 젠킨스로 CI/CD를 구축하면서 어떤 과정을 거쳐서 구축했는지 정리의 필요성을 느껴 이렇게 게시글을 작성하게 되었습니다.
젠킨스로 CI/CD를 구축하기 전에, CI/CD에 대해서 알 필요가 있습니다.
CI(Continuous Integration)
는 지속적 통합을 의미하며, 코드를 커밋하고 빌드했을 때 정상적으로 작동하는지 반복적으로 검증해 애플리케이션의 신뢰성을 높이는 작업입니다.
CD(Continuous Deployment)
는 지속적 배포를 의미하며, CI 과정에서 생성된 신뢰할 수 있는 애플리케이션을 실제 상용 환경에서 자동으로 배포하는 작업입니다.
즉, CI/CD
는 변경 사항을 계속 추적해 좀 더 안정화된 애플리케이션을 만들고, 이를 배포하는 과정을 자동화해 시스템을 안정적으로 운영하는 데 가장 많이 쓰이는 개념입니다.
그래서 CI/CD가 어떤 식으로 동작하는지 설명하자면, 개발자가 소스를 커밋하고 푸시하면 CI 단계로 들어갑니다.
CI 단계에서는 애플리케이션이 자동 빌드되고 테스트를 거쳐 배포할 수 있는 애플리케이션인지 확인합니다.
테스트를 통과하면 신뢰할 수 있는 애플리케이션으로 간주하고 CD 단계로 넘어갑니다.
CD 단계에서는 애플리케이션을 미리 설정한 파일을 통해 배포합니다.
그래서 젠킨스가 무엇인지 궁금할 수 있습니다.
CI/CD를 제공하는 툴이 매우 많지만, 그 중에서 젠킨스(Jenkins)
가 대표적이라고 할 수 있습니다.
젠킨스는 오픈 소스 CI/CD 도구로, 사용자가 직접 UI에서 작업을 구성하거나 작업 순서를 코드로 정의할 수 있습니다.
오랜 시간 동안 많은 사람이 사용하고 있어서 사용에 필요한 정보를 찾기 쉽고 활용 방법과 플러그인 개발 관련 커뮤니티 활동이 활발해서 다양한 사용 환경, 언어 및 빌드 도구와 연계할 플러그인이 필요할 경우 인터넷에서 대부분의 플러그인을 쉽게 찾을 수 있습니다.
그러면 이 젠킨스를 사용하여 CI/CD를 구축해 보겠습니다.
sudo yum update -y
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
sudo yum install jenkins
sudo systemctl start jenkins
sudo systemctl status jenkins
[ec2-user@ip-172-31-34-142 ~]$ sudo systemctl status jenkins
● jenkins.service - Jenkins Continuous Integration Server
Loaded: loaded (/usr/lib/systemd/system/jenkins.service; disabled; vendor preset: disabled)
Active: active (running) since Fri 2023-05-05 15:09:22 KST; 3 weeks 0 days ago
Main PID: 14192 (java)
CGroup: /system.slice/jenkins.service
└─14192 /usr/bin/java -Djava.awt.headless=true -jar /usr/share/java/jenkins.war --webroot=%C/jenkins/war --httpPort=9090
...
Active : active (running) 상태면 정상적으로 실행되고 있다는 의미입니다.
이상으로 CI/CD가 무엇이고, 젠킨스에 대해서, 그리고 젠킨스 설치법에 대해서 간단히 알아봤습니다.