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

Jenkins pipeline throws reporting:org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException

Jenkins pipeline throws reporting:org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: Scripts not permitted to use method groovy.util.XmlSlurper parseText java.lang.String

代码如下:

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

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

我已经使用 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.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.