Jenkins
25.02.24 기준 Weekly release 로 설치 합니다.
Jenkins
Jenkins 는 CI/CD(지속적인 통합/지속적인 배포) 환경을 구축하는데 사용하는 오픈 소스 자동화 툴 입니다.
개발 단계에서 코드를 자동으로 빌드, 테스트, 배포하는 일련의 과정을 파이프라인으로 구축하여 배포 편의를 증대시킵니다.
본문은 시스템에 젠킨스를 설치하여 프로세스로 실행되도록 구성하였습니다.
sudo wget -O /usr/share/keyrings/jenkins-keyring.asc \
https://pkg.jenkins.io/debian/jenkins.io-2023.key
echo "deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc]" \
https://pkg.jenkins.io/debian binary/ | sudo tee \
/etc/apt/sources.list.d/jenkins.list > /dev/null
sudo apt-get update
sudo apt-get install jenkins
jenkins 는 자바가 필요합니다.
sudo apt update
sudo apt install fontconfig openjdk-17-jre
java -version
openjdk version "17.0.13" 2024-10-15
OpenJDK Runtime Environment (build 17.0.13+11-Debian-2)
OpenJDK 64-Bit Server VM (build 17.0.13+11-Debian-2, mixed mode, sharing)
jenkins 실행 확인
systemctl status jenkins
내부 서버 구축 목적이기 때문에 useSecurity 해제
vim /var/lib/jenkins/config.xml
useSecruity 옵션을 true -> false 로 변경 후 저장합니다.
상기 로그인 화면 과정이 사라진 모습을 확인할 수 있습니다.
(내부 스터디 용이기 때문에 본 과정을 넣은 것이지 상용에서는 절대 과정을 생략하면 안됩니다.)
Jenkins 구조 및 동작 원리
젠킨스는 분산형 아키텍처로 설계되어, 여러 구성 요소가 상호작용하며 동작합니다.
젠킨스는 Jenkins Master / Jenkins Agent / Jenkins Pipeline / Jenkinsfile / Plugins 등으로 구성되어 있습니다.
1. Jenkins Master
젠킨스 서버의 중앙 서버로 파이프라인을 정의하여 실행할 작업을 관리합니다.
여러 젠킨스 에이전트들과 통신하여 예약된 빌드와 테스트 작업을 분배하고 빌드를 할당합니다.
2. Jenkins Agent (Jenkins Slave)
Jenkins Master 에게 명령 받아 작업을 수행하는 서버입니다.
에이전트는 독립 서버일수도, VM, Docker 컨테이너로도 구성됩니다.
3. Jenkins Pipeline
소프트웨어의 빌드, 테스트, 배포 과정을 자동화하는 정의된 과정입니다.
파이프라인은 Jenkinsfile 에 의해 정의되며, Git 과 같은 버전 관리 시스템에 저장됩니다.
4. Jenkinsfile
Jenkinsfile 은 파이프라인의 각 단계를 정의하는 스크립트 파일 입니다.
5. Plugins
젠킨스의 플러그인은 너무나도 많습니다.
플러그인을 통해 버전 관리 시스템, 빌드 도구, 배포 도구 등 다양한 툴과 연동될 수 있습니다.
Jenkins 는 특정 조건에서 빌드 트리거를 통해 빌드를 자동으로 실행하여 빌드 결과를 보고하여 배포합니다.
1. Build Trigger
소스 코드 변경 감지, 수동 트리거, 크론 빌드 등 특정 조건에서 자동으로 빌드를 실행합니다.
2. Build Execution
빌드가 트리거 되면 Jenkins 는 빌드 실행을 시작합니다.
이 과정에서 Jenkinsfile 에 정의된 pipeline 을 읽어 빌드, 테스트, 배포 단계를 순차적으로 진행합니다.
3. Build result
빌드가 끝나면
성공 시, 후속 작업(배포 테스트 실행, 배포 등) 을 진행하고,
실패 시, 해당 빌드에 대한 로그를 제공하며, 알람 설정 시 알림도 함께 전송합니다.
4. Deployment & Notification
빌드까지 완료 되면 Jenkins 는 애플리케이션을 개발 환경 혹은 운영 환경에 배포합니다.
해당 과정이 정상적으로 이루어 짐에 빌드 결과에 대한 알림을 받을 수 있습니다.
공식 문서 입니다.
https://www.jenkins.io/doc/book/installing/linux/#debianubuntu
Linux
Jenkins – an open source automation server which enables developers around the world to reliably build, test, and deploy their software
www.jenkins.io