Jenkins

2020. 3. 19. 14:50DevOps

반응형

🤔 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

  1. Pipeline as Code: Jenkinsfile을 Git으로 버전 관리
  2. Agent 분리: Master는 관리만, 빌드는 Agent에서 실행
  3. Credentials 관리: 하드코딩 금지, Credentials 플러그인 사용
  4. 병렬 처리: parallel 블록으로 빌드 시간 단축
  5. 캐싱 활용: 의존성 캐싱으로 빌드 속도 향상
  6. 알림 설정: Slack, Email 등으로 빌드 결과 공유

✅ 정리

항목 내용
정의 오픈소스 CI/CD 자동화 서버
주요 용도 빌드, 테스트, 배포 자동화
장점 무료, 플러그인 풍부, 높은 커스터마이징
단점 초기 설정 복잡, 유지보수 필요
적합한 경우 복잡한 파이프라인, 레거시 시스템 연동, 자체 인프라 운영

📚 참고 자료

반응형