Jenkins管道抛出 报告:org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: 脚本不允许使用方法groovy.util.XmlSlurper parseText java.lang.String中
以下是代码:
def testsuites = new XmlSlurper().parseText(xml)
此外,我在ScriptApproval中看不到此方法。我们如何手动将此方法列入白名单或任何其他解决方案?
答案 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
中看到我可以批准它:
您始终可以尝试手动添加此批准。在Jenkins主目录中,您可以找到scriptApproval.xml
文件。添加:
<string>method groovy.util.XmlSlurper parseText java.lang.String</string>
在<approvedSignatures>
标记内并重新启动Jenkins。它将产生与通过Jenkins UI批准此签名相同的效果。