我已经尝试了很多方法来将作业状态设置为失败而不打印堆栈跟踪。没有任何效果,因为“执行 groovy 脚本”步骤似乎无法访问任何作业变量。由于多种原因,我无法使用“执行系统 groovy 脚本”。我该怎么做?
currentBuild.result = '失败'
捕获:groovy.lang.MissingPropertyException:没有这样的属性:类的currentBuild:hudson4756676730102994092
build.@result = '失败'
捕获:groovy.lang.MissingPropertyException:没有这样的属性:为类构建:
哈德逊7411676143395659493
退出(1)
捕获:groovy.lang.MissingMethodException:没有方法签名:hudson4931461189946955208.exit() 适用于参数类型:(java.lang.Integer) 值:[1]
返回 1
完成:成功
终于想通了
System.exit(1)
我有意识地避免了这个答案,因为在其他工作中它会导致 Jenkins 本身关闭。但是,由于这不是系统 groovy 代码,它只是退出带有错误代码的 groovy 脚本。
Jenkins 管道将 always fail 任何non zero exit code的构建(并抛出异常) - 并且无法更改。
例如: 如果您使用的是 python 之类的东西,您可以在 try{}catch{} 块中执行“raise”以查看错误并使构建失败。 (subprocess.check_call 非常适合 Jenkins,并且 raise 将返回一个非零退出代码以使作业正确失败。)
在 Jenkins 作业中,我会直接调用“System.exit(1)”来使测试作业中的构建失败,以查看插件交互。