「Jenkins Pipeline」- expected to call xxx but wound up catching xxx

更新日期:2021年02月17日

问题描述

在 Jenkins Pipeline 中,我们从控制台中看到类似如下提示信息:

expected to call org.jfrog.hudson.pipeline.common.types.ArtifactoryServer.download but wound up catching artifactoryDownload;
see: https://jenkins.io/redirect/pipeline-cps-method-mismatches/

问题原因

正如页面 Pipeline CPS Method Mismatches / Use of Pipeline steps from \@NonCPS 所说:

but non-CPS-transformed code may not call CPS-transformed code.

解决方法

我们遇到该警告的原因有一下几种:

场景一:在带有 NonCPS 注解的方法中,调用 Jenkins Pipepline 的步骤(Step),导致该提示出现 # 09/21/2020

解决方法:去掉方法的 NonCPS 注解,但是需要对 Closure 进行改写,转为使用普通的语法。

场景二:在 eachLine 中,调用 Jenkins Pipeline 方法,导致该提示出现 # 01/25/2021

Pipeline CPS Method Mismatches

我们在 String 的 eachLine 中使用 Jenkins Pipeline Step sh 导致出现该提示(该问题与「场景一」类似)。

解决方法:我们改用 split("\\r?\\n") 进行字符串分割,然后使用 for 循环进行处理。

参考文献

Pipeline CPS Method Mismatches


ToC

问题描述

问题原因

解决方法

场景一:在带有 NonCPS 注解的方法中,调用 Jenkins Pipepline 的步骤(Step),导致该提示出现 # 09/21/2020

场景二:在 eachLine 中,调用 Jenkins Pipeline 方法,导致该提示出现 # 01/25/2021

参考文献