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

Jenkins declarative pipeline - How to abort whole build if certain conditions are not met instead of skipping a stage?

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

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

在声明性管道中,when 指令只能在阶段上使用。 要解决您的问题,您可以创建一个虚拟阶段来中止管道,以防万一情况并非如此,在该步骤中您可以使用常规 when 指令,并在阶段的步骤中使用 error 关键字,用于中止生成并显示相关消息(请参阅 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 部分仍将执行,允许您发送通知等,如果需要的话。