Jenkins管道抛出报告:org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException

时间:2018-02-17 22:08:00

标签: jenkins groovy jenkins-plugins jenkins-pipeline

  Jenkins管道抛出   报告:org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException:   脚本不允许使用方法groovy.util.XmlSlurper parseText   java.lang.String中

以下是代码:

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

此外,我在ScriptApproval中看不到此方法。我们如何手动将此方法列入白名单或任何其他解决方案?

1 个答案:

答案 0 :(得分:1)

我已经使用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批准此签名相同的效果。