CS | Jenkins

성수당·2026년 2월 2일

나혼자 CS

목록 보기
20/24
post-thumbnail

🥔Jenkins란 무엇인가?

  • JenkinsCI(Continuous Integration) / CD(Continuous Delivery·Deployment)를 위한 오픈소스 자동화 서버다.
  • 코드 변경이 발생하면 빌드, 테스트, 배포 과정을 자동으로 수행한다.
  • 쉽게 말해 “코드가 변경되면 자동으로 빌드·테스트·배포를 해주는 도구”다.

🥔Jenkins의 핵심 개념

  • Jenkins는 자동화 서버(Automation Server)다.

  • 개발자가 Git 저장소에 코드를 push하면 Jenkins가 이를 감지해 미리 정의된 작업을 자동 실행한다.

  • 주요 사용 목적은 다음과 같다.

    • 빌드
    • 테스트
    • 배포
    • 각종 스크립트 자동 실행

🥔Jenkins가 하는 일의 흐름

  1. 개발자가 GitLab 또는 GitHub에 코드 push를 수행한다.
  2. Jenkins가 Webhook 또는 Polling 방식으로 변경을 감지한다.
  3. 정의된 Job 또는 Pipeline을 실행한다.
  4. 실행 결과를 리포트로 제공한다.
    (성공 / 실패 상태, 로그, 알림 포함)

🥔Jenkins의 주요 구성 요소

🧩 Jenkins Controller (Master)

  • 웹 UI를 제공한다.
  • Job과 Pipeline을 관리한다.
  • 빌드 스케줄링을 담당한다.
  • 빌드 결과와 로그를 관리한다.

⚙️ Agent (Node)

  • 실제 빌드와 테스트를 수행하는 머신이다.
  • 여러 개의 Agent를 구성할 수 있다.
  • Linux, Windows, macOS 등 다양한 환경을 지원한다.

🥔Jenkins Pipeline

1) Declarative Pipeline (권장)

  • Jenkinsfile로 파이프라인을 정의한다.
  • 파이프라인을 코드로 관리하는 Pipeline as Code 방식이다.
  • 가독성과 유지보수성이 높다.
pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                sh 'make build'
            }
        }
        stage('Test') {
            steps {
                sh 'make test'
            }
        }
        stage('Deploy') {
            steps {
                sh './deploy.sh'
            }
        }
    }
}

2) Freestyle Job

  • UI에서 클릭 방식으로 설정한다.
  • 설정이 단순하지만 재현성과 유지보수성이 낮다.
  • 규모가 커질수록 관리가 어려워진다.

🥔Jenkins의 강점

✅ 플러그인 생태계

  • 1,800개 이상의 플러그인을 제공한다.
  • Git, Docker, Kubernetes, Slack, AWS 등 대부분의 도구와 연동 가능하다.

✅ 높은 자유도

  • 특정 언어나 빌드 도구에 종속되지 않는다.
  • 복잡한 CI/CD 파이프라인 구성에 적합하다.

✅ 완전한 오픈소스

  • 벤더 락인이 없다.
  • 사내 환경에 맞게 자유롭게 커스터마이징 가능하다.

🥔Jenkins의 단점

⚠️ 운영 부담

  • Jenkins 서버를 직접 관리해야 한다.
  • 플러그인 충돌 및 버전 관리 이슈가 발생할 수 있다.
  • 업그레이드 과정이 까다롭다.

⚠️ 초기 설정 난이도

  • 보안 설정과 권한 관리를 직접 구성해야 한다.
  • 표준화가 없으면 유지보수가 어려운 구조가 되기 쉽다.

🥔Jenkins vs GitLab CI 간단 비교

항목JenkinsGitLab CI
설치Self-hostedSaaS / Self-hosted
설정 방식Jenkinsfile / UI.gitlab-ci.yml
플러그인매우 풍부제한적
운영 부담높음낮음
통합성외부 연동 중심GitLab과 완전 통합
러닝 커브중~높음낮음

🥔Jenkins를 언제 쓰면 좋은가?

  • 기존에 Jenkins 인프라가 이미 구축된 경우에 적합하다.
  • 매우 복잡한 CI/CD 파이프라인이 필요한 경우에 유리하다.
  • 다양한 레거시 시스템과의 연동이 필요한 환경에 적합하다.
  • GitLab CI로는 부족한 수준의 커스터마이징이 필요한 경우에 적합하다.

🥔Jenkins + GitLab 조합

  • 실무에서 자주 사용되는 조합이다.
  • GitLab은 코드 관리와 MR을 담당한다.
  • Jenkins는 CI/CD 실행 엔진 역할을 수행한다.
  • GitLab Webhook을 통해 Jenkins Job을 트리거한다.
profile
말하는 감자🥔

0개의 댓글