Jenkins声明性管道-如果不满足某些条件,如何中止整个构建,而不是跳过一个阶段?

pbossiut  于 2023-02-11  发布在  Jenkins
关注(0)|答案(1)|浏览(209)

我可以在jenkins声明性管道中使用when条件成功跳过一个阶段,但如果一组条件不满足,我想提前中止构建。我尝试将when块放在阶段内部和阶段外部的顶层,但它给出语法错误,分别为“预期阶段”和“未定义的部分when”。有人能建议我如何使其工作吗?

when {
            anyOf {
                not {
                    equals expected: true, actual: params.boolean_parameter
                }
    
                not{
                    equals expected: '', actual: params.string_parameter
                }
            }
        }
js4nwp54

js4nwp541#

在声明性管道中,when指令只能用于阶段。要解决您的问题,您可以创建一个虚拟阶段,用于在条件不存在时中止管道,在该步骤中,您可以使用常规when指令,在阶段的步骤中,只需使用error关键字中止生成并显示相关消息(请参阅错误文档)。
比如:

pipeline {
   agent any
   stages {
       stage('Validate Conditions') {
           when {
               anyOf {
                   not {
                       equals expected: true, actual: params.boolean_parameter
                   }
                   not{
                       equals expected: '', actual: params.string_parameter
                   }
               }
           }
           steps {
               error("Aborting the build because conditions are not met")
           }
       }
       ... // rest of pipeline
   }
}

这样,如果不满足条件,构建将被中止,但是post部分仍将执行,允许您发送通知,如果需要的话。

相关问题