1. 개요
**젠킨스(Jenkins)**는 소프트웨어 개발 과정에서 CI/CD(Continuous Integration/Continuous Deployment)를 자동화하는 오픈소스 도구입니다.
CI/CD를 통해 개발자는 코드 변경 사항을 빠르게 빌드, 테스트, 배포할 수 있으며, 반복적인 작업을 자동화하여 생산성을 향상시킬 수 있습니다.
1-1. CI/CD란?
- CI(Continuous Integration, 지속적 통합)
- 개발자가 코드 변경 사항을 푸시하면 자동으로 빌드 및 테스트 수행
- 빠른 오류 감지 및 코드 품질 유지
- CD(Continuous Deployment, 지속적 배포)
- 테스트를 통과한 코드가 자동으로 배포
- 신속한 서비스 업데이트 및 운영 부담 감소
1-2. 젠킨스의 주요 기능
- 자동 빌드 및 테스트 – 코드 변경 시 자동으로 빌드하고 테스트 수행
- 배포 자동화 – FTP, SSH, Docker, Kubernetes 등을 활용하여 자동 배포
- 다양한 플러그인 제공 – Git, AWS, Slack, Docker 등과 연동 가능
- 웹 기반 UI 제공 – 브라우저에서 쉽게 설정 및 관리 가능
- 파이프라인(Pipeline) 지원 – CI/CD 프로세스를 코드로 정의 가능
2. 젠킨스의 동작 방식
젠킨스는 GitHub, GitLab, Bitbucket 등과 연동하여 코드 변경 사항을 감지하고, CI/CD 파이프라인을 실행하는 방식으로 동작합니다.
2-1. 기본 동작 과정
- 개발자가 코드 변경 사항을 Git에 푸시
- 젠킨스가 변경 사항을 감지하고 자동으로 빌드 수행
- 테스트 실행 및 결과 검증
- 테스트 통과 시 서버에 자동 배포
- 배포 완료 후 Slack, Email 등으로 알림 전송
💡 Tip: Jenkins는 GitHub Webhook과 연동하여 코드 변경 시 자동 실행되도록 설정할 수 있습니다.
3. 젠킨스 설치 및 기본 설정
젠킨스를 사용하려면 먼저 설치 후 기본적인 설정이 필요합니다.
3-1. 설치 방법
1) Windows 환경에서 설치
- Jenkins 공식 사이트에서 jenkins.war 파일 다운로드
- 커맨드 프롬프트에서 실행
- java -jar jenkins.war --httpPort=8080
- 브라우저에서 http://localhost:8080 접속 후 초기 설정 진행
2) Ubuntu 환경에서 설치
# Java 설치 (Jenkins는 Java 기반)
sudo apt update
sudo apt install openjdk-11-jdk
# Jenkins 패키지 추가 및 설치
wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
sudo apt update
sudo apt install jenkins
# Jenkins 서비스 시작
sudo systemctl start jenkins
sudo systemctl enable jenkins
설치가 완료되면 http://ip:8080에서 접속 가능
3) Docker를 이용한 설치
docker run -d -p 8080:8080 -p 50000:50000 --name jenkins jenkins/jenkins:lts
3-2. 초기 설정 및 관리자 계정 생성
- http://localhost:8080 접속 후 초기 관리자 비밀번호 입력
- cat /var/lib/jenkins/secrets/initialAdminPassword
- 플러그인 설치 (추천 플러그인 설치 권장)
- 관리자 계정 생성
4. 젠킨스 CI/CD 파이프라인 구축
젠킨스의 가장 강력한 기능 중 하나는 **파이프라인(Pipeline)**을 이용한 CI/CD 자동화입니다.
4-1. Jenkinsfile을 이용한 Laravel CI/CD 파이프라인 예제
아래는 Laravel 프로젝트의 CI/CD를 위한 Jenkinsfile 예제입니다.
pipeline {
agent any
environment {
DEPLOY_SERVER = "user@server"
DEPLOY_PATH = "/var/www/html"
}
stages {
stage('Checkout Code') {
steps {
git 'https://github.com/your-repo/your-laravel-project.git'
}
}
stage('Install Dependencies') {
steps {
sh 'composer install --no-dev --optimize-autoloader'
}
}
stage('Run Tests') {
steps {
sh 'php artisan test'
}
}
stage('Deploy') {
steps {
sh """
rsync -avz --exclude='.git' ./ $DEPLOY_SERVER:$DEPLOY_PATH
ssh $DEPLOY_SERVER 'cd $DEPLOY_PATH && php artisan migrate --force'
"""
}
}
}
}
4-2. 파이프라인 설명
- Checkout Code – GitHub에서 코드 가져오기
- Install Dependencies – Laravel의 Composer 패키지 설치
- Run Tests – PHPUnit을 이용해 테스트 실행
- Deploy – rsync로 서버에 배포 후 DB 마이그레이션 수행
5. 젠킨스 플러그인 추천
젠킨스는 다양한 플러그인을 지원하여 CI/CD 기능을 확장할 수 있습니다.
플러그인 | 설명 |
Git Plugin | GitHub, GitLab 등과 연동 가능 |
Pipeline Plugin | Jenkinsfile을 통한 파이프라인 지원 |
Slack Notification | 배포 완료 시 Slack 알림 전송 |
Blue Ocean | 파이프라인 시각화 지원 |
Docker Plugin | Docker 컨테이너 빌드 및 배포 지원 |
설치 방법:
- Jenkins 관리자 페이지 → Manage Jenkins → Manage Plugins
- 원하는 플러그인 검색 후 설치
6. 젠킨스를 활용한 배포 자동화 사례
젠킨스를 활용하면 Laravel, Vue, Node.js, React 등 다양한 프로젝트에서 자동 빌드 및 배포를 구현할 수 있습니다.
6-1. Laravel 프로젝트 배포 자동화 예시
- GitHub에 코드 푸시
- Jenkins가 자동으로 빌드 및 테스트 실행
- 테스트 통과 시 프로덕션 서버에 배포
- 배포 완료 후 Slack 알림 전송
7. 결론 – 젠킨스를 활용한 CI/CD 구축으로 개발 생산성 향상
젠킨스를 활용하면 반복적인 배포 과정을 자동화하여 개발자의 시간을 절약하고, 배포 오류를 최소화할 수 있습니다.