Jenkins管道在升级后失败(SandboxTransformer.forbidIfFinalizer)

wydwbb8l  于 2022-11-01  发布在  Jenkins
关注(0)|答案(2)|浏览(903)

最近升级了我们的Jenkins安装(从2.142升级到2.187,IIRC),但升级后所有管道--即使是简单的管道--经常出现故障。
否则,系统不会发出警报-一切看起来都工作正常。但在升级后,每个管道都会获取Jenkinsfile,并出现以下错误:

java.lang.NoSuchMethodError: org.kohsuke.groovy.sandbox.SandboxTransformer.forbidIfFinalizer(Lorg/codehaus/groovy/ast/MethodNode;)V
at com.cloudbees.groovy.cps.SandboxCpsTransformer.visitMethod(SandboxCpsTransformer.java:72)
at com.cloudbees.groovy.cps.CpsTransformer.call(CpsTransformer.java:132)
at com.cloudbees.groovy.cps.SandboxCpsTransformer.call(SandboxCpsTransformer.java:29)
at org.codehaus.groovy.control.CompilationUnit.applyToPrimaryClassNodes(CompilationUnit.java:1065)
at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:603)
at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:581)
at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:558)
at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:298)
at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:268)
at groovy.lang.GroovyShell.parseClass(GroovyShell.java:688)
at groovy.lang.GroovyShell.parse(GroovyShell.java:700)
at org.jenkinsci.plugins.workflow.cps.CpsGroovyShell.doParse(CpsGroovyShell.java:142)
at org.jenkinsci.plugins.workflow.cps.CpsGroovyShell.reparse(CpsGroovyShell.java:127)
at org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.parseScript(CpsFlowExecution.java:561)
at org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.start(CpsFlowExecution.java:522)
at org.jenkinsci.plugins.workflow.job.WorkflowRun.run(WorkflowRun.java:320)
at hudson.model.ResourceController.execute(ResourceController.java:97)
at hudson.model.Executor.run(Executor.java:429)

有人见过这个问题之前,并知道如何解决它?
编辑(即使是一个基本的hello world管道脚本也会失败,所以不是脚本的问题)。
更新到v2.189和所有插件的最新版本,它仍然失败。

oo7oh9g9

oo7oh9g91#

添加另一个包含更多详细信息的答案,因为这似乎是不同NoSuchMethodError的重复问题
最近我得到的错误是:SandboxTransformer.mightbePositionalArgumentConstructor
这里的其他问题看起来像是类似的根本原因。
根本原因是Script Security插件(更准确地说是底层的groovy-sandbox库)进行了破坏性的更改,因此除非同时升级,否则其他插件将被破坏。
这一点一开始并不明显,因为Jenkins强制插件之间的依赖关系--但看起来Jenkins依赖关系只对版本应用下限,而不是上限。
Script Security发行说明对此进行了解释。对于我的错误,Script Security 1184.v85d16b_d851b_3的发行说明指定:
Groovy插件必须同时更新到2803.v1a_f77ffcc773,以避免API不兼容问题
但是,这在Jenkins中并不强制执行--因此,如果您升级了脚本安全性,但由于某种原因(例如,需要先更新Jenkins)而无法升级Groovy插件,那么您将陷入困境,必须降级脚本安全性
此外,即使您无法通过插件管理器UI降级插件,您也可以通过插件〉高级选项卡显式安装所需版本的插件。

8yparm6h

8yparm6h2#

正如上面的评论,这个问题是与脚本安全插件。修复了这个按摩的配置和设置有点。怀疑这个问题是由以前的安全强化调整没有发挥好与新的插件规则。

相关问题