snow · 2026.5.15 10:01 · 조회 2
Jenkins 사용 팁
실무에서 유용하게 활용할 수 있는 Jenkins 팁과 베스트 프랙티스를 모았습니다.
Pipeline 작성 팁
빠른 실패(Fail Fast) 전략
테스트를 병렬로 실행하고 하나라도 실패하면 즉시 중단합니다.
stage('Tests') {
parallel {
stage('Unit') { steps { sh 'npm run test:unit' } }
stage('Lint') { steps { sh 'npm run lint' } }
stage('Type Check') { steps { sh 'npm run type-check' } }
}
}
스테이지 타임아웃 설정
무한정 대기를 방지합니다.
stage('Deploy') {
options {
timeout(time: 10, unit: 'MINUTES')
}
steps {
sh './deploy.sh'
}
}
재시도(Retry) 설정
네트워크 불안정 등 일시적 오류에 대응합니다.
steps {
retry(3) {
sh 'docker pull myimage:latest'
}
}
Credentials 활용 팁
환경 변수로 주입
environment {
DB_PASSWORD = credentials('db-password')
AWS_CREDS = credentials('aws-access-key') // AWS_CREDS_USR, AWS_CREDS_PSW로 분리됨
}
블록 내에서만 사용
steps {
withCredentials([string(credentialsId: 'api-token', variable: 'TOKEN')]) {
sh 'curl -H "Authorization: Bearer $TOKEN" https://api.example.com'
}
}
Credentials는 콘솔 로그에서 자동으로
****로 마스킹됩니다.
빌드 속도 개선
의존성 캐싱
stage('Install') {
steps {
// node_modules를 workspace에 유지하여 재사용
sh '''
if [ -d node_modules ]; then
npm ci --prefer-offline
else
npm ci
fi
'''
}
}
Docker 레이어 캐시 활용
sh '''
docker build \
--cache-from myapp:latest \
-t myapp:${BUILD_NUMBER} \
-t myapp:latest .
'''
변경된 파일만 빌드
script {
def changed = sh(script: 'git diff --name-only HEAD~1', returnStdout: true).trim()
if (!changed.contains('src/')) {
currentBuild.result = 'SUCCESS'
return
}
}
유용한 환경 변수
Jenkins 파이프라인에서 기본 제공하는 환경 변수입니다.
| 변수 | 값 예시 | 설명 |
|---|---|---|
BUILD_NUMBER | 42 | 현재 빌드 번호 |
BUILD_URL | http://jenkins/job/... | 빌드 URL |
JOB_NAME | my-app/main | Job 이름 |
BRANCH_NAME | main | 브랜치 이름 (Multibranch) |
GIT_COMMIT | a3f5c9d... | Git 커밋 해시 |
WORKSPACE | /var/jenkins/workspace/... | 작업 디렉토리 |
알림 노이즈 줄이기
성공할 때마다 알림을 보내면 무시하게 됩니다. changed를 사용해 상태 변경 시만 알림합니다.
post {
fixed {
slackSend color: 'good', message: "✅ 복구됨: ${env.JOB_NAME}"
}
regression {
slackSend color: 'danger', message: "❌ 새로운 실패: ${env.JOB_NAME}"
}
}
파이프라인 디버깅 팁
echo로 변수 확인
steps {
echo "브랜치: ${env.BRANCH_NAME}"
echo "커밋: ${env.GIT_COMMIT}"
sh 'env | sort' // 모든 환경 변수 출력
}
Replay 기능 활용
빌드 페이지 → Replay 버튼을 누르면 Jenkinsfile을 임시 수정하여 재실행할 수 있습니다. 실제 코드를 변경하지 않고 빠르게 테스트할 때 유용합니다.
Blue Ocean에서 시각적 확인
Blue Ocean 플러그인을 사용하면 파이프라인 흐름을 시각적으로 확인하고 실패 지점을 한눈에 파악할 수 있습니다.
보안 베스트 프랙티스
- 하드코딩된 비밀번호 절대 금지 → Credentials 사용
- Master 노드의 Executor를
0으로 설정 → Agent에서만 빌드 - 정기적으로 플러그인 업데이트
- API Token 주기적 갱신
- 불필요한 Job의 빌드 이력 자동 삭제 설정
Job 이름 규칙
일관된 명명 규칙으로 관리를 쉽게 합니다.
{서비스}-{환경}-{작업유형}
예시:
myapp-prod-deploy
myapp-staging-build
myapp-test-e2e
댓글
아직 댓글이 없습니다.
댓글을 작성하려면 로그인이 필요합니다.