-
[Jenkins] stash , unstash - 나중에 빌드에서 사용할 일부 파일을 보관, preserveStashes , failFastCICD 2023. 1. 28. 15:50
stash
동일한 파이프라인의 실행의 모든 노드 및 agent에서 나중에 사용할 수 있도록 파일 세트를 저장합니다.
unstash
stash를 통해 저장한 파일 세트를 현재 작업 공간으로 복원합니다.
stash, unstash가 필요한 경우는 빌드를 진행한 agent와 빌드된 파일의 테스트를 진행하는 agent가 다를 때 테스트 담당 agent에서 빌드된 파일에 접근하지 못하는 상황이 발생되는데 이러한 경우 stash, unstash를 이용하여 빌드된 파일에 원활하게 접근할 수 있도록 설정 가능합니다.
stages { stage('Source') { git branch: 'test', url: '...' stash name: 'test-source', includes: 'build.gradle,src/test/' } ... stage ('Test') { // execute required unit tests in parallel parallel ( master: { node ('master') { unstash 'test-sources' sh '/opt/gradle-2.7/bin/gradle -D test.single=TestExample1 test' }}, worker2: { node ('worker_node2') { unstash 'test-sources' sh '/opt/gradle-2.7/bin/gradle -D test.single=TestExample2 test' }}, ) } }
preserveStashes
저장된 파일 세트는 일반적으로 파이프라인의 실행이 종료되면 삭제되지만,
선언적 파이프라인에서는 options의 preserveStashes 기능을 이용하여 더 오랜 기간 저장하는 것이 가능합니다.
pipeline { agent any options { #파일 세트를 빌드가 5회가 진행될 때까지 저장합니다. preserveStashes(buildCount: 5) #Jenkins가 최신 버전일 경우 아래와 같이 작성가능 #preserveStashes(5) } stages { stage('Source') { steps{ git branch: 'test', url: '' stash name: 'test-source', includes: 'build.gradle,src/test/' } } ... stage ('Test') { // execute required unit tests in parallel parallel ( stage('Test on master') { agent { label "master" } steps{ unstash 'test-sources' sh '/opt/gradle-2.7/bin/gradle -D test.single=TestExample1 test' } }, stage('Test on worker') { agent { label "worker" } steps{ unstash 'test-sources' sh '/opt/gradle-2.7/bin/gradle -D test.single=TestExample2 test' } }, failFast: true # 참고 ) } } }
failFast
parallel을 통해 병렬로 스테이지들을 진행할 때 진행되고 있는 스테이지 중 하나가 실패했을 때 다른 스테이지들이 종료되는 것을 기다라지 않고 바로 중단시킬 수 있습니다.
기본값은 false이며 위의 작성해둔 방식을 통해 사용할 수 있습니다.
'CICD' 카테고리의 다른 글
[Jenkins] 사후 처리 - try-catch-finally , catchError , post (0) 2023.01.29 [Jenkins] 조건부 실행 (0) 2023.01.28 [Jenkins] disableConcurrentBuilds 구문 - multi branch 파이프라인의 동시성 제한 (0) 2023.01.28 [Jenkins] Milestone Step Plugin - 여러 빌드가 동일한 Step으로 진입하는 것을 제어 (0) 2023.01.27 [Jenkins] Lockable Resources Plugin - 리소스 동시 사용 제어 (0) 2023.01.27