— CI/CD Automation Guide
🔧 Jenkins 가이드
빌드, 테스트, 배포 전 과정을 자동화하는 지휘자(Orchestrator) Jenkins의 모든 것을 실무 중심으로 배웁니다.
2026 DevOps
4 슬라이드
CI/CD Mastery
01 — Introduction
🔧 Jenkins란?
Jenkins는 소프트웨어 빌드, 테스트, 배포 과정을 자동화해주는 오픈소스 CI/CD 서버입니다. 2011년에 처음 등장한 이후 지금까지도 가장 널리 쓰이는 자동화 도구 중 하나입니다.
📌 한 문장으로 정의하면?
"개발자가 코드를 Push하면 자동으로 빌드 → 테스트 → 배포까지 실행해주는 로봇 같은 도구"
🔍 Jenkins가 하는 일
👀
코드 변경 감지
GitHub 등에 코드가 Push되면 자동으로 감지하여 파이프라인을 시작
🔨
자동 빌드
Maven, Gradle, npm 등으로 소스코드를 실행 가능한 형태로 빌드
🧪
자동 테스트
단위 테스트, 통합 테스트를 자동 실행하고 결과를 리포트로 제공
📦
이미지 패키징
테스트 통과 후 Docker 이미지를 빌드하고 레지스트리에 Push
🚀
자동 배포
Kubernetes 또는 서버에 새 버전을 자동으로 배포
🔔
결과 알림
성공/실패 여부를 Slack, Email 등으로 팀에게 즉시 알림
💡 Jenkins는 1,800개 이상의 플러그인을 지원합니다. GitHub, Docker, Kubernetes, Slack 등 거의 모든 DevOps 도구와 연동할 수 있어 DevOps 허브 역할을 합니다.
02 — Roles in CI/CD
🔄 CI/CD에서 Jenkins의 역할
CI/CD 파이프라인에서 Jenkins는 모든 단계를 연결하고 자동화하는 지휘자 역할을 합니다.
🏗️ CI/CD 파이프라인 전체 흐름
👨💻
개발자 → GitHub Push
개발자가 코드를 작성하고 git push로 GitHub에 올림. 여기서부터 자동화 시작.
↓ Webhook 트리거
🔧
Jenkins — CI 단계 (지속적 통합)
코드 체크아웃 → 빌드 → 단위 테스트 → 코드 품질 검사 순서로 자동 실행. 실패 시 즉시 알림.
↓ 테스트 통과 시
📦
Jenkins — Docker 이미지 빌드 & Push
docker build로 이미지 생성 후 Registry에 Push. 태그는 Git 커밋 해시 등을 사용.
↓ 이미지 Push 완료
☸️
Jenkins — CD 단계 (지속적 배포)
kubectl apply 등으로 Kubernetes 클러스터에 새 이미지 배포. 롤링 업데이트 수행.
📊 CI vs CD — 무엇이 다른가?
| 구분 | CI (Continuous Integration) | CD (Continuous Delivery/Deployment) |
|---|---|---|
| 목적 | 코드 통합 오류를 빠르게 발견 | 언제든 배포 가능한 상태 유지 |
| Jenkins 역할 | 빌드, 테스트 자동화 | Docker 빌드, K8s 배포 자동화 |
| 실행 시점 | 코드 Push할 때마다 | CI 성공 후 자동 또는 수동 승인 |
| 결과물 | 테스트 통과 여부 + 빌드 산출물 | 운영 서버에 새 버전 배포 완료 |
03 — Jenkinsfile Structure
📄 Jenkinsfile 구조 이해
Jenkins는 Jenkinsfile이라는 파일에 파이프라인 로직을 코드로 작성합니다. 이 파일은 프로젝트 루트에 위치하며, Pipeline as Code 방식으로 버전 관리가 가능합니다.
🏗️ 실무 표준 5단계 파이프라인 뼈대
pipeline {
agent any
environment {
APP_NAME = 'fastapi-app'
REGISTRY = 'registry.example.com'
IMAGE_TAG = "${env.BUILD_NUMBER}"
}
stages {
stage('① Checkout') { steps { /* 코드 가져오기 */ } }
stage('② Build') { steps { /* 소스 빌드·패키징 */ } }
stage('③ Test') { steps { /* 단위·통합 테스트 */ } }
stage('④ Docker Push') { steps { /* 이미지 빌드 & 레지스트리 Push */ } }
stage('⑤ Deploy') { steps { /* 서버/K8s에 배포 */ } }
}
post {
always { /* 성공/실패 관계없이 항상 실행 (정리 작업) */ }
success { /* 파이프라인 성공 시 실행 (알림 등) */ }
failure { /* 파이프라인 실패 시 실행 (알림 등) */ }
}
}
📌 전체 단계 한눈에 보기
| 단계 | 역할 | 핵심 포인트 |
|---|---|---|
| ① Checkout | 코드 가져오기 | GitHub에서 최신 코드를 Jenkins 작업공간에 다운로드 |
| ② Build | 소스 빌드·패키징 | Maven / Gradle / npm 등으로 실행 가능한 형태로 컴파일·패키징 |
| ③ Test | 자동화 테스트 | 단위·통합 테스트 실행 — 실패 시 이후 단계 자동 중단 |
| ④ Docker Push | 이미지 빌드 & 배포 | Dockerfile 기반 이미지 생성 → 고유 태그 + latest로 레지스트리에 Push |
| ⑤ Deploy | 서버/K8s 배포 | kubectl apply 또는 ssh 배포로 새 이미지를 운영 환경에 반영 |
| post 블록 | 후처리 | 성공/실패 알림, 임시 파일·이미지 정리 등 항상 실행 |
←→ 키보드로 이동 · T 테마 전환