我正在尝试跳过基于常规变量的stage
,该变量值将在另一个阶段计算。
在下面的示例中,基于环境变量Validate
有条件地跳过了VALIDATION_REQUIRED
阶段,我将在构建/触发Job时传递该变量。 --- 这按预期工作。
尽管Build
变量设置为isValidationSuccess
,但false
阶段始终运行。
我尝试更改when
或{ return "${isValidationSuccess}" == true ; }
之类的{ return "${isValidationSuccess}" == 'true' ; }
条件表达式,但没有一个起作用。
打印变量时,它显示为“ false”
def isValidationSuccess = true
pipeline {
agent any
stages(checkout) {
// GIT checkout here
}
stage("Validate") {
when {
environment name: 'VALIDATION_REQUIRED', value: 'true'
}
steps {
if(some_condition){
isValidationSuccess = false;
}
}
}
stage("Build") {
when {
expression { return "${isValidationSuccess}"; }
}
steps {
sh "echo isValidationSuccess:${isValidationSuccess}"
// Perform some action
}
}
}
when
条件。when
根据变量跳过阶段?when
选项看起来很干净。此外,当跳过特定阶段时,stage view
会很好地显示。script {
if(isValidationSuccess){
// Do the build
}else {
try {
currentBuild.result = 'ABORTED'
} catch(Exception err) {
currentBuild.result = 'FAILURE'
}
error('Build not happened')
}
}
参考: https://jenkins.io/blog/2017/01/19/converting-conditional-to-pipeline/
答案 0 :(得分:0)
stage("Build") {
when {
expression { isValidationSuccess == true }
}
steps {
sh "echo isValidationSuccess:${isValidationSuccess}"
// Perform some action
}
}
when
会验证布尔值,因此应将其评估为true或false。