Jenkins流水线抛出报告:org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException

3

Jenkins流水线报错: org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException:脚本不允许使用方法groovy.util.XmlSlurper parseText java.lang.String。

以下是代码:

def testsuites = new XmlSlurper().parseText(xml)

此外,我在ScriptApproval中找不到这个方法。我们如何手动将此方法加入白名单,或者有其他解决方案可以修复这个问题?
1个回答

5
我已经使用Jenkins 2.60.3测试了您的用例,并在运行使用new XmlSlurper().parseText(someXml)的脚本后,出现了预期的异常:
org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: Scripts not permitted to use method groovy.util.XmlSlurper parseText java.lang.String
    at org.jenkinsci.plugins.scriptsecurity.sandbox.whitelists.StaticWhitelist.rejectMethod(StaticWhitelist.java:175)
    at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onMethodCall(SandboxInterceptor.java:137)
    at org.kohsuke.groovy.sandbox.impl.Checker$1.call(Checker.java:155)
    at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:159)
    at com.cloudbees.groovy.cps.sandbox.SandboxInvoker.methodCall(SandboxInvoker.java:17)
    at WorkflowScript.run(WorkflowScript:9)

我在 /scriptApproval 中看到了可以批准它:

enter image description here

您始终可以尝试手动添加此批准。在 Jenkins 主目录中,您可以找到 scriptApproval.xml 文件。添加以下内容:

<string>method groovy.util.XmlSlurper parseText java.lang.String</string>

<approvedSignatures>标签内并重新启动Jenkins。它会产生与通过Jenkins UI批准此签名相同的效果。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接