
※ Jenkins
Jenkins(젠킨스)는 개발자가 작성한 코드를 자동으로 빌드하고 테스트하고 배포까지 해주는
CI/CD(지속적 통합/지속적 배포) 자동화 도구이다.
· 오픈소스 무료
· 수많은 플러그인 제공
· Java 기반, Windows/Linux/macOS 모두 가능
· DevOps 환경에서 가장 많이 활용되는 자동화 툴
한마디로, 개발자가 코드를 Push하면 Jenkins는 자동으로 배포까지 해주는 시스템이다.
※ 왜 Jenkins가 필요한가?
<전통적인 방식>
· 개발 → 빌드 → 서버 압축 업로드 → 서비스 재배포
→ 사람 손이 많이 들어감
→ 실수 발생 확률 높음
→ 배포가 느림
<Jenkins 방식>
· Git push
· Jenkins가 자동으로 빌드 + 테스트 + 컨테이너 이미지 생성 + 배포
→ 오류 감소
→ 배포 속도 증가
→ 자동화로 안정성 확보
※ CI/CD 개념 정리
| 용어 | 의미 | 예 |
| CI (Continuous Integration) | 코드 자동 빌드 & 테스트 | Pull 받을 때 자동 테스트 |
| CD (Continuous Delivery/Deployment) | 자동 배포 | Push하면 서버 반영 |
CI = 코드 품질 체크
CD = 자동 배포
※ Jenkins 동작 흐름
개발자가 Git에 코드 Push
↓
Jenkins가 변경 탐지 (Webhook 등)
↓
코드 빌드 (Maven/Gradle)
↓
테스트 실행
↓
Docker 이미지 만들기
↓
이미지 레지스트리에 업로드
↓
Kubernetes/서버로 자동 배포
코드가 올라오면 Jenkins가 알아서 배포까지 진행한다.
※ Jenkins 주요 기능
| 기능 | 설명 |
| 자동 빌드 | Maven, Gradle 등 자동 빌드 |
| 자동 테스트 | 유닛 테스트, 통합 테스트 |
| 자동 배포 | 배포 스크립트, K8s(Kubernetes) 배포 |
| Pipeline | DevOps 파이프라인 구성 |
| Plugin | Slack 알림, Docker, Git 등 확장 |
| 헤드리스 환경 | 서버 환경에서 동작 |
※ Jenkins Pipeline 예시
pipeline {
agent any
stages {
stage('Checkout') {
steps {
git 'https://github.com/example/demo.git'
}
}
stage('Build') {
steps {
sh './gradlew build'
}
}
stage('Docker Build & Push') {
steps {
sh 'docker build -t myapp .'
sh 'docker push myapp'
}
}
stage('Deploy') {
steps {
sh 'kubectl apply -f deployment.yaml'
}
}
}
}
Pipeline 코드로 배포 프로세스를 버전 관리할 수 있음
※ Jenkins vs 다른 CI/CD 도구
| 도구 | 특징 |
| Jenkins | 오픈소스, 유연함 최고, 설치형 |
| GitLab CI | GitLab에 내장, DevOps 강점 |
| GitHub Actions | GitHub 연동 쉬움, 빠르게 성장 |
| Argo CD | Kubernetes GitOps 특화 |
※ 언제 Jenkins를 선택할까?
| 상황 | 선택 |
| 자체 서버 운영 | Jenkins |
| 복잡한 워크플로 | Jenkins |
| 온프레미스 환경 | Jenkins |
| 빠른 SaaS 활용 | GitHub Actions / GitLab 추천 |
※ 요약
Jenkins(젠킨스)는 개발자가 코드를 올리면 자동으로 빌드하고 배포해주는 DevOps 자동화 도구이다.