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

댓글

아직 댓글이 없습니다.

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