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

| CI/CD 개념
- CI (Continuous Integration): 코드 변경 시 자동 빌드 + 테스트
- CD (Continuous Delivery/Deployment): 테스트 통과 후 자동 배포
| 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
- Controller: 웹 UI 제공, 잡 스케줄링, 에이전트 관리
- Agent: 실제 빌드/테스트 실행 담당 (분산 처리)
- 로컬 실습에서는 Controller = Agent (내장 에이전트)
| 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)
| 사전 조건
- Docker Desktop 설치 (WSL2 백엔드)
- WSL2 환경
- Jenkins 컨테이너 실행
docker run -d \
--name jenkins \
-p 8080:8080 \
-p 50000:50000 \
-v jenkins_home:/var/jenkins_home \
jenkins/jenkins:lts
-p 8080:8080: 웹 UI-p 50000:50000: 에이전트 연결 포트-v jenkins_home: 데이터 영속성 (볼륨)

컨테이너 실행 확인

localhost:8080 접속 화면
- 초기 Admin Password 확인
docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword
→ 출력된 값을 localhost:8080 잠금 해제 화면에 붙여넣기
- 추천 플러그인 설치
초기 세팅 시 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 실습

New Item → Freestyle project 선택
- New Item → 이름 입력 → Freestyle project 선택
- Build Steps → Execute shell 추가
echo "Hello, Jenkins!"
echo "Build Number: $BUILD_NUMBER"
date
- Save → Build Now 클릭
- Build History → 콘솔 출력 확인

Build 실행 화면

콘솔 출력 확인
5. Pipeline 실습
| Jenkinsfile 기본 구조
pipeline {
agent any
stages {
stage('Build') {
steps {
echo 'Building...'
}
}
stage('Test') {
steps {
echo 'Testing...'
}
}
stage('Deploy') {
steps {
echo 'Deploying...'
}
}
}
}
| Pipeline Job 생성
- New Item → Pipeline 선택
- Pipeline 탭 → Pipeline script 에 위 코드 붙여넣기
- Build Now → Blue Ocean에서 시각적으로 확인

파이프라인
| 환경변수 사용 예시
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}"
}
}
}
}

환경변수 적용된 빌드 결과
| 심화 학습 키워드
kubernetes pluginfor JenkinsHelm chart(jenkins/jenkins)PodTemplateJCasC(Jenkins Configuration as Code)ServiceAccount+ClusterRoleBindingPersistent Volume Claim