[TIL] CI/CD + Jenkins 개념

syeoni_h·2025년 4월 3일

TIL

목록 보기
5/11

📍 CI/CD란

Continuous Integration (CI)

개발자가 코드 변경 사항을 정기적으로 중앙 저장소(Git)에 병합하는 프로세스

Continuous Delivery (CD)

테스트를 통과한 코드를 배포 가능한 상태로 유지하는 프로세스

Continuous Deployment (CD)

검증된 코드 변경 사항을 별도의 승인 없이 자동으로 운영 환경에 배포하는 프로세스

CI/CD 프로세스

  1. 개발자 → 새로운 기능 개발 및 코드 수정
  2. 코드 작성 → 버전 관리 시스템(Git)에 커밋
  3. 빌드(Build) → 소스 코드를 실행 가능한 상태로 변환
  4. 테스트(Test) → 자동화된 테스트를 실행하여 코드 품질 검증
  5. 배포(Deploy) → 운영 서버, 스테이징 환경에 배포

빌드 & 배포

  • 빌드 : 소스코드를 서버에 올릴 수 있는 상태로 만드는 것
  • 배포 : 완성된 코드를 서버에 반영하는 것

👨‍🦲 Jenkins

Jenkins 주요 특징

JAVA Runtime 환경에서 동작

다양한 플러그인 → 자동화 작업 처리

Jenkins 플러그인

1️⃣ Credential 플러그인 (보안 관련)

  • API 키, SSH 키, 비밀번호 같은 중요한 정보를 안전하게 저장하고 사용할 수 있도록 지원
  • Jenkins 내부에서 암호화되어 저장되며 빌드 시 참조 가능

2️⃣ Pipeline 플러그인 (자동화 스크립트)

  • 여러 개의 플러그인을 조합하여 빌드, 테스트, 배포를 자동화

Jenkins Pipeline Syntax

1. Declarative Pipeline (선언형)

  • 가장 널리 사용되는 방식, 구조적이고 가독성 좋음
  • pipeline {} 블록을 사용하여 정의
pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                echo 'Building...'
            }
        }
        stage('Test') {
            steps {
                echo 'Testing...'
            }
        }
        stage('Deploy') {
            steps {
                echo 'Deploying...'
            }
        }
    }
}

2. Scripted Pipeline (스크립트형)

  • 복잡한 로직이 필요한 경우 사용
node {
    stage('Build') {
        echo 'Building...'
    }
    stage('Test') {
        echo 'Testing...'
    }
    stage('Deploy') {
        echo 'Deploying...'
    }
}

Pipeline Sections

  • Agent : 파이프라인을 실행할 Jenkins 노드 지정
  • Post : 스테이지가 끝난 이후의 결과에 따라 후속 조치 (success, failure, always, cleanup)
  • Stages : 어떤 일들을 처리할 건지 일련의 스테이지 정의
  • Steps :Stage 내에서 실행할 개별 작업을 정의

Declarative Pipeline

  • Environment : 어떤 파이프라인이나 스테이지 스코프의 환경 변수 설정
  • Parameter : 파이프라인 실행 시 변수 값을 입력받을 수 있음
  • Triggers : 특정 이벤트 발생 시 파이프라인을 실행
  • When : 특정 조건을 만족할 때만 단계 실행

0개의 댓글