snow · 2026.4.21 04:19 · 조회 2
Jenkins Pipeline 작성하기
Pipeline이란?
Pipeline은 코드로 정의하는 CI/CD 자동화 워크플로우입니다. Jenkinsfile이라는 파일로 Git 저장소에 저장되어 버전 관리됩니다.
Declarative vs Scripted
| 구분 | Declarative | Scripted |
|---|---|---|
| 문법 | 구조화된 DSL | Groovy 스크립트 |
| 권장 여부 | ✓ 권장 | 고급 사용자용 |
| 가독성 | 높음 | 낮음 |
| 유연성 | 중간 | 높음 |
Declarative Pipeline 기본 구조
pipeline {
agent any
environment {
APP_NAME = 'my-app'
DEPLOY_ENV = 'staging'
}
stages {
stage('Checkout') {
steps {
checkout scm
}
}
stage('Build') {
steps {
sh 'npm install'
sh 'npm run build'
}
}
stage('Test') {
steps {
sh 'npm test'
}
post {
always {
junit 'test-results/**/*.xml'
}
}
}
stage('Deploy') {
when {
branch 'main'
}
steps {
sh './scripts/deploy.sh'
}
}
}
post {
success {
echo '빌드 성공!'
}
failure {
echo '빌드 실패!'
}
}
}
주요 지시어(Directive)
agent
빌드 실행 환경을 지정합니다.
agent any // 어떤 에이전트든 사용
agent none // 각 stage에서 개별 지정
agent { label 'linux' } // 레이블로 특정 에이전트 지정
agent { docker 'node:18-alpine' } // Docker 컨테이너 사용
when
특정 조건에서만 stage를 실행합니다.
when {
branch 'main' // main 브랜치일 때
environment name: 'DEPLOY_ENV', value: 'production'
expression { return params.DEPLOY == true }
}
parallel
여러 stage를 동시에 실행합니다.
stage('Parallel Tests') {
parallel {
stage('Unit Test') {
steps { sh 'npm run test:unit' }
}
stage('E2E Test') {
steps { sh 'npm run test:e2e' }
}
}
}
Jenkinsfile 저장소 연동
- 새 Item → Pipeline 선택
- Pipeline 섹션에서 Pipeline script from SCM 선택
- SCM: Git, Repository URL 입력
- Script Path:
Jenkinsfile(기본값) - 저장
이후 Git push 시 자동으로 Jenkinsfile을 읽어 파이프라인을 실행합니다.
댓글
아직 댓글이 없습니다.
댓글을 작성하려면 로그인이 필요합니다.