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
반응형