728x90
Jenkins에서 "when 구문"을 사용하면 stage를 skip 할 수 있다.
https://www.jenkins.io/doc/book/pipeline/syntax/#when
stage('Sonar Analysis') {
when (BRANCH_NAME != 'master') {
echo 'Excecuted only on master branch.'
}
}
출처 https://medium.com/@Lopay/how-to-skip-stages-in-jenkins-scripted-pipeline-f653e54d835d
Declarative pipeline 예시
pipeline {
agent any
stages {
stage('stage 1') {
when {
expression {
params.PROJECT == 'projectA'
}
}
steps {
echo "PROJECT : ${PROJECT}"
}
}
stage('stage 2') {
when {
allOf {
expression {
params.PROJECT != 'projectX'
params.PROJECT != 'projectY'
params.PROJECT != 'projectZ'
}
}
}
steps {
echo "PROJECT : ${PROJECT}"
}
}
}
}
Declarative pipeline의 script block에서 when 구문은 동작하지 않아서 "if 구문"을 사용해서 stage를 skip 한다.
더보기
when is a directive used in the declarative pipeline definition - it won't work inside script {} block. Instead use if.
if 구문으로 stage를 실행 / skip 할 조건 설정하기
def testSuiteMapping = [
'project1': ['tc1', 'tc2', 'tc3'],
'project2': ['tc4', 'tc5'],
'project3': ['tc1', 'tc2', 'tc3', 'tc4', 'tc5']
]
def testSuite = testSuiteMapping["${TARGET_PROJECT}"] //TARGET_PROJECT는 JOB의 parameter
stage("stage 1"){
steps {
script {
if ("$testSuite".contains('tc1')){
echo "THIS STAGE IS NOT SKIPPED"
// (.....)
}
}
}
}
위 캡처 처럼 stage2~4가 skip 되더라도 if 문을 실행하기 때문에 when 구문을 사용한 stage 처럼 완전 skip 되지는 않는다.
728x90
'Jenkins' 카테고리의 다른 글
jenkins slave node 추가하기 (0) | 2022.12.08 |
---|---|
[Jenkins] check element in groovy array/hash/collection/list (0) | 2022.11.16 |
[Jenkins] Setup Lockable Resource (0) | 2022.11.14 |
Jenkins 설치하기 (Ubuntu) (0) | 2022.10.11 |
Jenkins - GitHub Webhooks 설정하기 (0) | 2022.10.10 |