Jenkins
2020. 3. 19. 14:50ㆍDevOps
반응형
🤔 Jenkins란?
Jenkins는 오픈소스 자동화 서버로, CI/CD(지속적 통합/지속적 배포) 파이프라인을 구축하는 데 가장 널리 사용되는 도구입니다.
🎯 Jenkins의 핵심 기능
1. 지속적 통합 (CI - Continuous Integration)
- 개발자들이 코드를 공유 저장소에 자주 병합
- 자동으로 빌드 및 테스트 실행
- 코드 품질 문제를 조기에 발견
2. 지속적 배포 (CD - Continuous Delivery/Deployment)
- 테스트 통과 후 자동으로 스테이징/프로덕션 환경에 배포
- 수동 개입 최소화
- 빠르고 안정적인 릴리스 가능
3. 파이프라인 자동화
- 빌드 → 테스트 → 배포 전 과정을 자동화
- 반복적인 작업 제거
- 휴먼 에러 감소
🏗️ Jenkins 아키텍처
┌─────────────────────────────────────────────────────────┐
│ Jenkins Master │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ 스케줄링 │ │ 모니터링 │ │ UI 제공 │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
└─────────────────────────┬───────────────────────────────┘
│
┌───────────────┼───────────────┐
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│ Agent 1 │ │ Agent 2 │ │ Agent 3 │
│ (Build) │ │ (Test) │ │ (Deploy) │
└──────────┘ └──────────┘ └──────────┘| 구성 요소 | 역할 |
|---|---|
| Master | 작업 스케줄링, 에이전트 관리, UI 제공 |
| Agent (Node) | 실제 빌드/테스트/배포 작업 실행 |
💡 Jenkins 사용 시 Best Practices
- Pipeline as Code: Jenkinsfile을 Git으로 버전 관리
- Agent 분리: Master는 관리만, 빌드는 Agent에서 실행
- Credentials 관리: 하드코딩 금지, Credentials 플러그인 사용
- 병렬 처리:
parallel블록으로 빌드 시간 단축 - 캐싱 활용: 의존성 캐싱으로 빌드 속도 향상
- 알림 설정: Slack, Email 등으로 빌드 결과 공유
✅ 정리
| 항목 | 내용 |
|---|---|
| 정의 | 오픈소스 CI/CD 자동화 서버 |
| 주요 용도 | 빌드, 테스트, 배포 자동화 |
| 장점 | 무료, 플러그인 풍부, 높은 커스터마이징 |
| 단점 | 초기 설정 복잡, 유지보수 필요 |
| 적합한 경우 | 복잡한 파이프라인, 레거시 시스템 연동, 자체 인프라 운영 |
📚 참고 자료
반응형