Dev_Study/Jenkins

[Jenkins] SVN을 사용하는 Jenkins Pipeline (Declarative 방식)

LeeDaniel 2025. 7. 23. 15:57
SVN을 사용하는 Jenkins Pipeline (Declarative 방식)
항상 최신 리비전(HEAD)을 기준으로 빌드하도록 설정된 예시
pipeline {
    agent any

    environment {
        BUILD_DIR = 'project-name'  // SVN 체크아웃 받을 디렉토리
    }

    stages {
        stage('Checkout from SVN') {
            steps {
                // 항상 최신 리비전 체크아웃
                checkout([
                    $class: 'SubversionSCM',
                    locations: [[
                        credentialsId: 'svn-credentials-id',   // Jenkins에 등록된 SVN 계정
                        depthOption: 'infinity',
                        ignoreExternalsOption: true,
                        local: "${env.BUILD_DIR}",
                        remote: 'http://svn.example.com/repo/trunk/project-name'
                    ]],
                    workspaceUpdater: [$class: 'UpdateUpdater']  // 최신 상태로 업데이트
                ])
            }
        }

        stage('Install & Build') {
            steps {
                dir("${env.BUILD_DIR}") {
                    sh 'npm install'
                    sh 'npm run build'
                }
            }
        }

        stage('Deploy') {
            steps {
                dir("${env.BUILD_DIR}") {
                    // 예: S3 업로드, SCP, rsync, k8s rollout 등
                    sh './deploy.sh'
                }
            }
        }
    }

    post {
        failure {
            echo "❌ 빌드 실패: 커밋된 변경 사항을 포함하지 못했을 수 있음"
        }
        success {
            echo "✅ 최신 리비전 포함 완료 및 배포 성공"
        }
    }
}​


728x90
반응형