snow · 2026.5.15 10:01 · 조회 2
Jenkins 사용 팁
실무에서 유용하게 활용할 수 있는 Jenkins 팁과 베스트 프랙티스를 모았습니다.
Pipeline 작성 팁
빠른 실패(Fail Fast) 전략
테스트를 병렬로 실행하고 하나라도 실패하면 즉시 중단합니다.
1stage('Tests') {2 parallel {3 stage('Unit') { steps { sh 'npm run test:unit' } }4 stage('Lint') { steps { sh 'npm run lint' } }5 stage('Type Check') { steps { sh 'npm run type-check' } }6 }7}스테이지 타임아웃 설정
무한정 대기를 방지합니다.
1stage('Deploy') {2 options {3 timeout(time: 10, unit: 'MINUTES')4 }5 steps {6 sh './deploy.sh'7 }8}재시도(Retry) 설정
네트워크 불안정 등 일시적 오류에 대응합니다.
1steps {2 retry(3) {3 sh 'docker pull myimage:latest'4 }5}Credentials 활용 팁
환경 변수로 주입
1environment {2 DB_PASSWORD = credentials('db-password')3 AWS_CREDS = credentials('aws-access-key') // AWS_CREDS_USR, AWS_CREDS_PSW로 분리됨4}블록 내에서만 사용
1steps {2 withCredentials([string(credentialsId: 'api-token', variable: 'TOKEN')]) {3 sh 'curl -H "Authorization: Bearer $TOKEN" https://api.example.com'4 }5}Credentials는 콘솔 로그에서 자동으로
****로 마스킹됩니다.
빌드 속도 개선
의존성 캐싱
1stage('Install') {2 steps {3 // node_modules를 workspace에 유지하여 재사용4 sh '''5 if [ -d node_modules ]; then6 npm ci --prefer-offline7 else8 npm ci9 fi10 '''11 }12}Docker 레이어 캐시 활용
1sh '''2 docker build \3 --cache-from myapp:latest \4 -t myapp:${BUILD_NUMBER} \5 -t myapp:latest .6'''변경된 파일만 빌드
1script {2 def changed = sh(script: 'git diff --name-only HEAD~1', returnStdout: true).trim()3 if (!changed.contains('src/')) {4 currentBuild.result = 'SUCCESS'5 return6 }7}유용한 환경 변수
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를 사용해 상태 변경 시만 알림합니다.
1post {2 fixed {3 slackSend color: 'good', message: "✅ 복구됨: ${env.JOB_NAME}"4 }5 regression {6 slackSend color: 'danger', message: "❌ 새로운 실패: ${env.JOB_NAME}"7 }8}파이프라인 디버깅 팁
echo로 변수 확인
1steps {2 echo "브랜치: ${env.BRANCH_NAME}"3 echo "커밋: ${env.GIT_COMMIT}"4 sh 'env | sort' // 모든 환경 변수 출력5}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
댓글
아직 댓글이 없습니다.
댓글을 작성하려면 로그인이 필요합니다.