개요
Jenkins는 가장 오래되고 널리 사용되는 오픈소스 CI/CD 자동화 서버입니다. 2004년 Hudson 프로젝트로 시작되어 현재까지 빌드, 테스트, 배포 파이프라인 자동화의 업계 표준 역할을 해왔습니다. Java 기반으로 거의 모든 플랫폼에서 실행되며, 1,800개 이상의 플러그인으로 확장 가능합니다.
- 라이선스: MIT
- 공식 사이트: https://jenkins.io
- 개발 언어: Java
- 실행 방식: 셀프호스팅 (WAR, Docker, Kubernetes)
주요 기능
Pipeline as Code
Jenkinsfile을 리포지토리에 포함하여 파이프라인을 코드로 관리:
pipeline {
agent any
stages {
stage('Build') {
steps { sh 'mvn clean package' }
}
stage('Test') {
steps { sh 'mvn test' }
}
stage('Deploy') {
steps { sh './deploy.sh' }
}
}
post {
failure { mail to: 'team@example.com', subject: 'Build Failed' }
}
}플러그인 생태계
- 1,800+ 플러그인 (가장 큰 CI/CD 플러그인 생태계)
- Git, Docker, Kubernetes, Slack, SonarQube, AWS 등 연동
- Blue Ocean: 모던 UI 플러그인
분산 빌드
- Master/Agent 아키텍처
- 다중 노드에서 병렬 빌드
- Docker, Kubernetes 기반 동적 에이전트
장단점
| 장점 | 단점 |
|---|---|
| 완전 무료 오픈소스 | 설정/관리 복잡 |
| 최대 플러그인 생태계 | UI가 구식 |
| 완전한 커스터마이징 | 플러그인 호환성 이슈 |
| 모든 환경 지원 | 보안 패치 자체 관리 |
GitHub Actions vs Jenkins
| 항목 | Jenkins | GitHub Actions |
|---|---|---|
| 호스팅 | 셀프호스팅 | 클라우드 (GitHub) |
| 설정 | Jenkinsfile (Groovy) | YAML |
| 비용 | 인프라 비용 | 무료 티어 있음 |
| 확장 | 플러그인 | 마켓플레이스 액션 |
| 최적 | 엔터프라이즈, 레거시 | GitHub 프로젝트 |