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_NUMBER42현재 빌드 번호
BUILD_URLhttp://jenkins/job/...빌드 URL
JOB_NAMEmy-app/mainJob 이름
BRANCH_NAMEmain브랜치 이름 (Multibranch)
GIT_COMMITa3f5c9d...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

댓글

아직 댓글이 없습니다.

댓글을 작성하려면 로그인이 필요합니다.