You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins Pipeline抛出RejectedAccessException,如何白名单XmlSlurper的parseText方法?

Jenkins Pipeline XmlSlurper parseText 权限问题解决方案

这个问题我之前也碰到过,确实挺头疼的——明明ScriptApproval界面里搜不到对应的方法签名,Pipeline却一直抛出org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException。下面给你几个靠谱的解决办法:

方法一:手动修改ScriptApproval配置文件

如果UI里找不到要授权的方法,直接修改配置文件是最直接的方式:

  • 找到Jenkins的主目录(默认是~/.jenkins或者/var/lib/jenkins,具体看你的部署环境)
  • 打开目录下的scriptApproval.xml文件
  • 在<approvedSignatures>标签内添加一行:
    <string>method groovy.util.XmlSlurper parseText java.lang.String</string>
    
  • 保存文件后,重启Jenkins服务,权限就会生效。

方法二:通过Jenkins脚本控制台授权

不用改文件,直接在Jenkins后台执行Groovy脚本就能完成授权:

  1. 进入Jenkins的脚本控制台(路径:Manage Jenkins -> Script Console)
  2. 粘贴并执行以下代码:
    def scriptApproval = Jenkins.instance.getExtensionList('org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.ScriptApproval')[0]
    def targetSignature = 'method groovy.util.XmlSlurper parseText java.lang.String'
    if (!scriptApproval.isApproved(targetSignature)) {
        scriptApproval.approveSignature(targetSignature)
        println "已成功授权方法签名:${targetSignature}"
    } else {
        println "该方法签名已经被授权过了"
    }
    
  3. 执行完成后,无需重启Jenkins,直接重新运行Pipeline即可。

方法三:使用共享库绕过沙箱限制

如果你不想修改全局的权限设置,可以把XML解析逻辑放到Jenkins共享库中:

  • 创建一个Jenkins共享库,将使用XmlSlurper.parseText()的代码写在共享库的类或者脚本里
  • 在Jenkins全局配置(Manage Jenkins -> Configure System)中,找到Global Pipeline Libraries,添加你的共享库,并勾选Trusted选项
  • 在Pipeline中引用这个共享库,调用里面的XML解析方法即可——因为受信任的共享库不受沙箱权限限制,不需要单独授权方法。

内容的提问来源于stack exchange,提问作者sreenivas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:54:32