— 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 테마 전환