Jenkins 如何中止声明性管道

Jenkins 如何中止声明性管道,jenkins,jenkins-pipeline,Jenkins,Jenkins Pipeline,我正在尝试新的声明性管道语法 我想知道,当一个参数有一个无效值时,如何中止管道的所有阶段和步骤 我可以在每个阶段都添加一个when子句,但这对我来说并不理想。是否有更好的方法执行此操作?如果您使用此步骤,则此方法可以与指令配合使用 例如,如果给定的参数值不可接受,您可以执行预先检查并中止生成-防止后续阶段运行: 管道{ 任何代理人 参数{ 字符串(名称:“targetEnv”, defaultValue:'dev', 描述:'必须是“开发”、“qa”或“暂存”') } 舞台{ 阶段('验证参数'

我正在尝试新的声明性管道语法

我想知道,当一个参数有一个无效值时,如何中止管道的所有阶段和步骤


我可以在每个阶段都添加一个
when
子句,但这对我来说并不理想。是否有更好的方法执行此操作?

如果您使用此步骤,则此方法可以与指令配合使用

例如,如果给定的参数值不可接受,您可以执行预先检查并中止生成-防止后续阶段运行:

管道{
任何代理人
参数{
字符串(名称:“targetEnv”,
defaultValue:'dev',
描述:'必须是“开发”、“qa”或“暂存”')
}
舞台{
阶段('验证参数'){
什么时候{
表情{
//仅在targetEnv无效时运行此阶段
!['dev','qa','staging'].包含(params.targetEnv)
}
}
台阶{
//中止生成,跳过后续阶段
错误(“无效的目标环境:${params.targetEnv}”)
}
}
阶段(“签出”){
台阶{
echo“正在签出源代码…”
}
}
阶段(‘构建’){
台阶{
回声“建筑…”
}
}
}
}

您可以使用
FlowInterruptedException
,例如:

import hudson.model.Result
import org.jenkinsci.plugins.workflow.steps.FlowInterruptedException

pipeline {
  ...
  steps {
    script {
      throw new FlowInterruptedException(Result.ABORTED)
    }
  ...
}
这将像
错误
步骤一样立即停止执行,但对结果有更多的控制

请注意,它要求您批准签名:

new org.jenkinsci.plugins.workflow.steps.FlowInterruptedException hudson.model.Result
除了
结果.中止
之外,还有:
结果.成功
结果.不稳定
结果.失败
结果.未构建


免责声明:这有点麻烦。

谢谢,但是如何停止进行下一阶段的结果“成功”@Deepaklal在错误步骤之前,您不能使用
脚本{currentBuild.result='Success'}
我还认为您应该将结果设置为error,以停止下一阶段的执行。