Jenkins를 활용한 CI/CD 파이프라인 구축하기
들어가며
소프트웨어 배포 과정에서 코드를 빌드하고, 테스트를 수행하며, 서버에 배포하는 일련의 과정을 수동으로 진행하는 것은 매우 위험하고 비효율적입니다. 사람이 직접 진행할 때 발생할 수 있는 실수를 줄이고, 개발자가 코드 작성에만 집중할 수 있는 환경을 만들기 위해서는 CI/CD(지속적 통합/지속적 배포) 자동화가 필수적입니다. 1
그중에서도 Jenkins는 가장 많이 사용되는 오픈소스 자동화 서버로, 수많은 플러그인을 통해 거의 모든 기술 스택과 연동할 수 있는 강력한 확장성을 제공합니다.
Jenkins란 무엇인가?
Jenkins는 자바 기반의 오픈소스 자동화 서버로, 소프트웨어 개발 과정에서 반복되는 작업을 자동화해 줍니다. 2
- 지속적 통합(CI): 여러 명의 개발자가 작업한 코드를 정기적으로 빌드하고 테스트하여 병합 이슈를 조기에 발견합니다.
- 지속적 배포(CD): 빌드된 결과물을 스테이징 또는 프로덕션 환경에 자동으로 배포합니다.
- 플러그인 생태계: Git, Docker, Kubernetes, Slack 등 1,800개 이상의 플러그인을 지원하여 사용자 맞춤형 환경을 구축할 수 있습니다.
Jenkins를 이용한 CI/CD 파이프라인의 전체적인 워크플로우

Jenkins 설치 가이드
Jenkins는 컨테이너 환경에서 실행할 때 설정이 간편하고 호스트 OS와의 격리가 용이합니다. 3
Docker를 이용한 설치 (권장)
Docker를 사용하여 Jenkins를 설치하고 실행하는 방법입니다.
# ✅ Docker를 이용한 Jenkins 실행
docker run -d \
-p 8080:8080 -p 50000:50000 \
-v jenkins_home:/var/jenkins_home \
--name jenkins-server \
jenkins/jenkins:lts
-p 8080:8080: 웹 UI 접속 포트-v jenkins_home:/var/jenkins_home: 데이터 영속성을 위한 볼륨 설정
주요 개념 이해하기
Jenkins를 효율적으로 사용하기 위해 반드시 알아야 할 핵심 용어들입니다.
- Pipeline: 빌드-테스트-배포의 전 과정을 코드로 정의한 것입니다. (Pipeline as Code)
- Node: Jenkins가 작업을 실행하는 환경을 의미합니다. (Master와 Agent로 구성)
- Stage: 파이프라인 내의 독립적인 단계입니다. (예: Build, Test, Deploy)
- Step: Stage 내부에서 실행되는 구체적인 단일 작업입니다.
Jenkins Pipeline 작성 예시 (Declarative)
현대적인 Jenkins 사용 방식인 Declarative Pipeline 문법을 활용한 코드 예시입니다.
pipeline {
agent any // 어느 에이전트에서든 실행 가능하도록 설정
stages {
stage('Checkout') {
steps {
// ✅ 올바른 예시: SCM에서 소스 코드 가져오기
checkout scm
echo 'Checking out source code...'
}
}
stage('Build') {
steps {
// 빌드 스크립트 실행 (예: Gradle)
sh './gradlew build'
echo 'Building application...'
}
}
stage('Test') {
steps {
// 테스트 수행
sh './gradlew test'
echo 'Running automated tests...'
}
}
stage('Deploy') {
steps {
// ✅ 올바른 예시: 빌드 성공 시 배포 서버로 전송
echo 'Deploying to server...'
// sh './deploy.sh'
}
}
}
post {
always {
// ❌ 잘못된 예시: 결과 알림을 누락하면 안 됩니다.
// 성공/실패 여부에 관계없이 실행
echo 'Pipeline finished.'
}
success {
echo 'CI/CD Pipeline Succeeded!'
}
failure {
echo 'CI/CD Pipeline Failed. Check logs.'
}
}
}
실전 활용: GitHub Webhook 연동
Jenkins를 진정으로 가치 있게 만드는 것은 이벤트 기반 자동화입니다. GitHub Webhook을 연동하면 다음과 같은 흐름이 가능해집니다. 4
- 개발자가 GitHub 리포지토리에 코드를
push합니다. - GitHub가 Jenkins 서버에 Webhook 이벤트를 보냅니다.
- Jenkins는 이벤트를 감지하고 미리 정의된 Pipeline을 즉시 실행합니다.
- 빌드 및 테스트 결과가 Slack이나 이메일로 팀원들에게 공유됩니다.
마무리
Jenkins는 강력한 유연성과 방대한 커뮤니티 지원을 바탕으로 CI/CD 환경의 표준으로 자리 잡았습니다.
- Pipeline as Code:
Jenkinsfile을 통해 인프라의 형상 관리가 가능합니다. - 확장성: 1,800개 이상의 플러그인을 통해 어떤 환경과도 연동할 수 있습니다.
- 자동화: Webhook 연동을 통해 개발 생산성을 극대화할 수 있습니다.
참고 자료:
-
Jenkins 공식 문서 - Guided Tour - Jenkins 시작하기 가이드 ↩
-
Red Hat - CI/CD란 무엇인가? - CI/CD의 기본 개념과 중요성 ↩
-
Jenkins 공식 문서 - Installing Jenkins - 플랫폼별 Jenkins 설치 상세 가이드 ↩
-
Jenkins Wiki - GitHub Plugin - GitHub와 Jenkins 연동 방법 ↩
댓글남기기