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 部分仍将执行,允许您发送通知等,如果需要的话。
我可以在 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 部分仍将执行,允许您发送通知等,如果需要的话。