Jenkins로 시작하는 CI 파이프라인 구축기
📌 들어가며
프로젝트를 진행하면서 느낀 가장 큰 문제 중 하나는
**“코드가 잘 돌아가는지 매번 수동으로 확인해야 한다”**는 점이었다.
이 문제를 해결하기 위해 도입한 것이 바로 CI (Continuous Integration),
그리고 그 중심에는 Jenkins가 있었다.
이번 글에서는 Jenkins를 활용해
CI 파이프라인을 구축하는 과정을 정리해보려고 한다.
🧩 CI 도구로서의 Jenkins
Jenkins는 대표적인 오픈소스 CI/CD 도구로,
다음과 같은 역할을 수행한다.
- 코드 변경 감지 (Git 연동)
- 자동 빌드
- 테스트 실행
- 결과 피드백 제공
즉, 개발자가 코드를 push하면
Jenkins가 알아서 “문제 없는 코드인지” 검증해주는 구조다.
⚙️ k8s 클러스터에 Jenkins 설치
단순 로컬이 아닌,
Kubernetes 환경에 Jenkins를 올리는 경험을 해봤다.
왜 k8s에 Jenkins를 올릴까?
- 확장성 (Pod 단위로 관리 가능)
- 안정성 (자동 재시작)
- DevOps 환경에 자연스럽게 통합
설치 방식
- Helm Chart 사용
- Persistent Volume 연결
- Service / Ingress 설정
👉 이 과정을 통해
실제 서비스 환경과 유사한 CI 환경을 구성할 수 있었다.
🛠 Jenkins 기본 사용법
Jenkins를 처음 쓰면 UI가 꽤 낯설다.
핵심 개념은 크게 3가지다:
- Job (프로젝트 단위 작업)
- Build (실행 결과)
- Pipeline (자동화 흐름)
특히 중요한 건 Pipeline이다.
📦 Jenkins 프로젝트 설정
프로젝트 설정 시 핵심 포인트:
- Git Repository 연결
- Branch 설정 (main / develop 등)
- Webhook 연동 (자동 실행)
👉 GitHub에 push 하면 Jenkins가 자동 실행되도록 구성
🔄 간단한 Jenkins 파이프라인
Jenkins Pipeline은 보통 이런 흐름이다:
agent any
stages {
stage('Install') {
steps {
sh 'npm install'
}
}
stage('Test') {
steps {
sh 'npm test'
}
}
stage('Build') {
steps {
sh 'npm run build'
}
}
}
}
👉 핵심은 단계별 자동화
- 설치
- 테스트
- 빌드
이 모든 과정이 자동으로 수행된다.
🧠 CI 파이프라인 기초
CI 파이프라인의 핵심 목적은 단 하나다.
"코드가 깨지지 않도록 보장하는 것"
이를 위해 다음을 반드시 포함해야 한다:
- 자동 테스트
- 빌드 검증
- 빠른 피드백
🧪 단위 테스트 자동화
CI에서 가장 중요한 단계는 테스트다.
왜 중요한가?
- 코드 변경 시 안정성 확보
- 버그 조기 발견
- 리팩토링 안전성 확보
Jenkins에서는 테스트 실패 시:
👉 빌드 자체를 실패 처리
즉, 문제가 있는 코드는 배포되지 않는다.
🧹 코드 품질 확보
단순히 "동작"하는 것만으로는 부족하다.
그래서 추가한 단계:
- ESLint
- Prettier
- 코드 스타일 검사
👉 CI에서 자동 실행 → 코드 품질 강제
🔥 느낀 점
Jenkins를 도입하면서 가장 크게 느낀 변화는 이것이다:
✅ Before
- 수동 테스트
- 배포 전 불안감
- 실수 가능성 높음
✅ After
- 자동 검증
- 빠른 피드백
- 안정적인 배포
🎯 마무리
Jenkins 기반 CI는 단순한 자동화가 아니라
개발 문화를 바꾸는 도구라고 느꼈다.
특히 팀 프로젝트에서는
- 코드 신뢰도 상승
- 협업 효율 증가
- 배포 안정성 확보
라는 큰 장점이 있다.
'pgms' 카테고리의 다른 글
| [15주차] - [9기] 타입스크립트로 함께하는 웹 풀 사이클 개발(React, Node.js) 10회차 - 70 (0) | 2026.04.24 |
|---|---|
| [15주차] - [9기] 타입스크립트로 함께하는 웹 풀 사이클 개발(React, Node.js) 10회차 - 69 (0) | 2026.04.23 |
| [15주차] - [9기] 타입스크립트로 함께하는 웹 풀 사이클 개발(React, Node.js) 10회차 - 67 (0) | 2026.04.21 |
| [15주차] - [9기] 타입스크립트로 함께하는 웹 풀 사이클 개발(React, Node.js) 10회차 - 66 (0) | 2026.04.20 |
| [14주차] - [9기] 타입스크립트로 함께하는 웹 풀 사이클 개발(React, Node.js) 10회차 - 65 (1) | 2026.04.17 |