CICD 및 버전 관리/CICD
[CI/CD] Jenkins 파이프라인 설정
ioh'sDeveloper
2025. 1. 5. 20:05
Jenkins 파이프라인 설정 가이드
1. Jenkins Pipeline 개요
Jenkins Pipeline은 CI/CD(Continuous Integration/Continuous Deployment) 프로세스를 자동화하기 위해 Jenkins에서 제공하는 기능으로, 코드 빌드, 테스트, 배포까지 모든 단계를 코드로 정의할 수 있는 도구입니다. 기존의 Freestyle Job 방식과 달리 파이프라인 스크립트를 사용하여 지속적인 통합과 배포를 체계적으로 관리할 수 있습니다.
1.1 Pipeline의 종류
- Declarative Pipeline: 선언형 구문을 사용하여 간결하고 가독성이 높은 파이프라인을 정의합니다.
- Scripted Pipeline: Groovy 스크립트를 활용하여 복잡한 논리 처리가 필요한 파이프라인을 정의할 수 있습니다.
2. Jenkins 설치 및 초기 설정
2.1 Jenkins 설치
- Ubuntu 환경에서 Jenkins 설치:
sudo apt update sudo apt install openjdk-11-jdk wget -q -O - https://pkg.jenkins.io/debian/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
2.2 초기 설정
- Jenkins 서비스 시작:
sudo systemctl start jenkins
- 관리자 비밀번호 확인 및 Jenkins 초기 설정 완료.
3. Pipeline 생성 및 구성
3.1 Declarative Pipeline 구성 예제
pipeline {
agent any
stages {
stage('Build') {
steps {
echo 'Building...'
sh 'mvn clean install'
}
}
stage('Test') {
steps {
echo 'Testing...'
sh 'mvn test'
}
}
stage('Deploy') {
steps {
echo 'Deploying...'
sh 'scp target/myapp.jar user@server:/path/to/deploy'
}
}
}
}
3.2 Scripted Pipeline 구성 예제
node {
stage('Checkout') {
checkout scm
}
stage('Build') {
try {
sh 'mvn clean install'
} catch (Exception e) {
error 'Build failed'
}
}
stage('Test') {
sh 'mvn test'
}
stage('Deploy') {
if (currentBuild.result == 'SUCCESS') {
sh 'scp target/myapp.jar user@server:/path/to/deploy'
}
}
}
4. Pipeline 설정 Best Practices
- 코드 관리: Jenkinsfile을 소스 코드와 함께 관리하여 버전 관리가 용이하도록 합니다.
- 환경 변수 사용: 반복되는 값을 환경 변수로 설정하여 재사용성을 높입니다.
- 에러 핸들링: 각 단계에서 예외 처리를 추가하여 문제 발생 시 적절한 조치를 취합니다.
- 병렬 단계 구성: 테스트 단계에서 병렬로 테스트를 수행하여 파이프라인 실행 시간을 단축합니다.
5. Multibranch Pipeline 설정
Multibranch Pipeline은 Git 브랜치별로 파이프라인을 자동으로 생성하고 관리할 수 있는 기능입니다. 이를 통해 브랜치 전략에 따라 CI/CD를 효율적으로 관리할 수 있습니다.
설정 방법
- Jenkins 대시보드에서 새로운 Item을 생성합니다.
- "Multibranch Pipeline"을 선택합니다.
- Git Repository URL을 입력하고 자격 증명을 설정합니다.
- "Branch Sources"에서 빌드할 브랜치를 선택합니다.
- 저장 후 빌드를 실행합니다.
6. Pipeline 플러그인 활용
Jenkins Pipeline을 확장하기 위해 다양한 플러그인을 활용할 수 있습니다. 다음은 주요 플러그인 목록입니다.
플러그인명 설명
Blue Ocean | 파이프라인 시각화 도구 |
Pipeline: Stage View | 단계별 실행 결과를 보여주는 플러그인 |
Credentials Binding | 자격 증명 관리를 쉽게 할 수 있는 플러그인 |
Git Parameter | Git 브랜치 선택 기능 제공 |
7. 실제 프로젝트에 적용하기
7.1 Maven 프로젝트 적용 사례
- 프로젝트 구성:
- Git Repository에 Jenkinsfile 추가
- Jenkins에서 Multibranch Pipeline 설정
- 파이프라인 구성:
pipeline { agent any environment { JAVA_HOME = "/usr/lib/jvm/java-11-openjdk-amd64" PATH = "$JAVA_HOME/bin:$PATH" } stages { stage('Build') { steps { sh 'mvn clean install' } } stage('Deploy') { steps { sh 'scp target/*.jar user@server:/app/deploy' } } } }
8. 결론
Jenkins Pipeline은 DevOps 환경에서 CI/CD 프로세스를 자동화하고 프로젝트의 신뢰성과 배포 속도를 높이는 데 필수적인 도구입니다. Declarative Pipeline과 Scripted Pipeline을 적절히 활용하여 다양한 요구사항에 맞는 파이프라인을 설계하고, Multibranch Pipeline을 통해 브랜치 전략을 효과적으로 관리할 수 있습니다. Jenkins를 통한 지속적인 통합과 배포를 통해 개발 생산성을 극대화할 수 있습니다.