如何在 Jenkins 中允许 catchError?

How to allow catchError in Jenkins?

所以我通过在他们的一个 groovy 文件中添加一个 catchError 语句来解决我的组织的一个需求,但这反过来会产生一个通用 Jenkins 测试库的构建错误 BasePipelineTest:

[main] ERROR org.apache.maven.plugin.surefire.SurefirePlugin -   PipelineTest.testCall_AllFieldsAvailable:71 ? MissingMethod No signature
[main] ERROR org.apache.maven.plugin.surefire.SurefirePlugin -   PipelineTest.testCall_FieldsNotAvailable:130 ? MissingMethod No signature

作为 Jenkins 标准的一部分 BasePipelineTest class 解决方案通常是:

helper.registerAllowedMethod("cleanWs", []) {}

对于 cleanWs() 之类的方法,或类似的方法,具体取决于方法及其输入。然而,这是针对具有输入值的方法,但 catchError 没有输入值,而是像这样完成的:

catchError {
    ...
}

所以helper.registerAllowedMethod("catchError", []) {}是行不通的。有谁知道如何让它为 catchError?

这样的东西工作

我也尝试过:

 helper.registerAllowedMethod("catchError", [com.lesfurets.jenkins.unit.catchError]) {}

这会造成 MissingProperty 错误

原来大括号本身在 groovy 中注册为 class。我修复了它:

helper.registerAllowedMethod("catchError", [Closure.class]) {}