Jenkins 학습 정리

실습 요약

┌─────────────────────────────────────────────────────────────────┐
│                       Jenkins 학습 흐름                          │
└─────────────────────────────────────────────────────────────────┘
  Jenkins란? (CI/CD 개념 + 아키텍처)
         ↓
  로컬 환경 구성 (Docker 컨테이너 실행)
         ↓
  기본 용어 정리
         ↓
  Freestyle Job 실습
         ↓
  Pipeline 실습 (Jenkinsfile)
         ↓
  Kubernetes 연결 개념 (동적 Pod 에이전트)

1. Jenkins란?

25_jenkins_intro.png

| CI/CD 개념

| Jenkins의 역할

개발자 코드 Push
      ↓
  Jenkins 감지
      ↓
  빌드 (Compile)
      ↓
  테스트 (Unit Test)
      ↓
  배포 (Deploy)

→ Commit부터 서비스까지 자동화할 수 있는 도구
→ 공식 사이트: https://www.jenkins.io/

| Jenkins 장점

| Jenkins 아키텍처

Controller (Master)
├── 스케줄링 / 잡 관리 / UI 제공
└── Agent (Slave) 1
└── Agent (Slave) 2   ← 실제 빌드 수행
└── Agent (Slave) N

| Jenkins vs 다른 CI/CD 툴

항목 Jenkins GitHub Actions GitLab CI
호스팅 직접 (온프레미스) GitHub 클라우드 GitLab 클라우드
설정 파일 Jenkinsfile .github/workflows .gitlab-ci.yml
플러그인 1,800개+ Marketplace 내장
무료 오픈소스 월 2,000분 월 400분
유연성 매우 높음 중간 중간

→ Jenkins를 쓰는 이유: 온프레미스 환경, 세밀한 커스터마이징, 레거시 시스템 연동


2. 로컬 환경 구성 (Docker)

| 사전 조건

  1. Jenkins 컨테이너 실행
docker run -d \
  --name jenkins \
  -p 8080:8080 \
  -p 50000:50000 \
  -v jenkins_home:/var/jenkins_home \
  jenkins/jenkins:lts

26_jenkins_docker_run.png
컨테이너 실행 확인

27_jenkins_localhost.png
localhost:8080 접속 화면

  1. 초기 Admin Password 확인
docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword

→ 출력된 값을 localhost:8080 잠금 해제 화면에 붙여넣기

  1. 추천 플러그인 설치
    초기 세팅 시 Install suggested plugins 선택 후 추가:
    • Blue Ocean : 파이프라인 시각화
    • Git : GitHub 연동
    • Pipeline : Jenkinsfile 지원

3. 기본 용어 정리

용어 설명
Job / Project Jenkins에서 실행하는 작업 단위
Build Job이 한 번 실행된 것
Stage 파이프라인의 논리적 단계 (Build, Test, Deploy 등)
Step Stage 안의 개별 명령
Agent 빌드를 실행하는 노드
Workspace 빌드 시 파일이 저장되는 임시 디렉토리
Jenkinsfile 파이프라인을 코드로 정의한 파일 (Pipeline as Code)

4. Freestyle Job 실습

28_jenkins_freestyle_new.png
New Item → Freestyle project 선택

  1. New Item → 이름 입력 → Freestyle project 선택
  2. Build StepsExecute shell 추가
echo "Hello, Jenkins!"
echo "Build Number: $BUILD_NUMBER"
date
  1. SaveBuild Now 클릭
  2. Build History → 콘솔 출력 확인

29_jenkins_freestyle_build.png
Build 실행 화면

30_jenkins_console.png
콘솔 출력 확인


5. Pipeline 실습

| Jenkinsfile 기본 구조

pipeline {
    agent any

    stages {
        stage('Build') {
            steps {
                echo 'Building...'
            }
        }
        stage('Test') {
            steps {
                echo 'Testing...'
            }
        }
        stage('Deploy') {
            steps {
                echo 'Deploying...'
            }
        }
    }
}

| Pipeline Job 생성

  1. New ItemPipeline 선택
  2. Pipeline 탭 → Pipeline script 에 위 코드 붙여넣기
  3. Build Now → Blue Ocean에서 시각적으로 확인

31_jenkins_pipeline.png
파이프라인

| 환경변수 사용 예시

pipeline {
    agent any
    environment {
        APP_NAME = 'my-app'
        VERSION = '1.0.0'
    }
    stages {
        stage('Info') {
            steps {
                echo "App: ${APP_NAME} v${VERSION}"
                echo "Build: ${env.BUILD_NUMBER}"
            }
        }
    }
}

32_jenkins_env_var.png
환경변수 적용된 빌드 결과

| 심화 학습 키워드