Jenkins拒绝system groovy脚本中的LinkedHashMap

Jenkins拒绝system groovy脚本中的LinkedHashMap,jenkins,groovy,Jenkins,Groovy,在我们詹金斯的环境中,我们仍然有一些旧的自由式工作,我们不想换成管道。其中一个使用系统groovy脚本。本周,我们决定将Jenkins版本升级到2.46(也更新了插件,例如安全性),突然系统groovy脚本不再工作 org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: Scripts not permitted to use new java.util.LinkedHashMap at org.jenk

在我们詹金斯的环境中,我们仍然有一些旧的自由式工作,我们不想换成管道。其中一个使用系统groovy脚本。本周,我们决定将Jenkins版本升级到2.46(也更新了插件,例如安全性),突然系统groovy脚本不再工作

org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: Scripts not permitted to use new java.util.LinkedHashMap
    at org.jenkinsci.plugins.scriptsecurity.sandbox.whitelists.StaticWhitelist.rejectNew(StaticWhitelist.java:187)
    at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onNewInstance(SandboxInterceptor.java:130)
    at org.kohsuke.groovy.sandbox.impl.Checker$3.call(Checker.java:191)
    at org.kohsuke.groovy.sandbox.impl.Checker.checkedConstructor(Checker.java:188)
    at org.kohsuke.groovy.sandbox.impl.Checker$checkedConstructor$3.callStatic(Unknown Source)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallStatic(CallSiteArray.java:56)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:194)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:214)
    at DescriptionPriorities.<init>(Script1.groovy)
    at DescriptionPriorities.$INIT(Script1.groovy)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)
    at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
    at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.invoke(StaticMetaMethodSite.java:46)
    at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.callStatic(StaticMetaMethodSite.java:102)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallStatic(CallSiteArray.java:56)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:194)
    at org.kohsuke.groovy.sandbox.impl.Checker$2.call(Checker.java:182)
    at org.kohsuke.groovy.sandbox.GroovyInterceptor.onStaticCall(GroovyInterceptor.java:33)
    at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onStaticCall(SandboxInterceptor.java:140)
    at org.kohsuke.groovy.sandbox.impl.Checker$2.call(Checker.java:180)
    at org.kohsuke.groovy.sandbox.impl.Checker.checkedStaticCall(Checker.java:177)
    at org.kohsuke.groovy.sandbox.impl.Checker$checkedStaticCall$2.callStatic(Unknown Source)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallStatic(CallSiteArray.java:56)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:194)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:222)
    at DescriptionPriorities.<clinit>(Script1.groovy)
Caused: java.lang.ExceptionInInitializerError
    at sun.misc.Unsafe.ensureClassInitialized(Native Method)
    at sun.reflect.UnsafeFieldAccessorFactory.newFieldAccessor(UnsafeFieldAccessorFactory.java:43)
    at sun.reflect.ReflectionFactory.newFieldAccessor(ReflectionFactory.java:142)
    at java.lang.reflect.Field.acquireFieldAccessor(Field.java:1088)
    at java.lang.reflect.Field.getFieldAccessor(Field.java:1069)
    at java.lang.reflect.Field.get(Field.java:393)
    at org.codehaus.groovy.reflection.CachedField.getProperty(CachedField.java:54)
    at groovy.lang.MetaClassImpl.getProperty(MetaClassImpl.java:1805)
    at groovy.lang.MetaClassImpl.getProperty(MetaClassImpl.java:3735)
    at org.codehaus.groovy.runtime.InvokerHelper.getProperty(InvokerHelper.java:175)
    at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.getProperty(ScriptBytecodeAdapter.java:456)
    at org.kohsuke.groovy.sandbox.impl.Checker$4.call(Checker.java:243)
    at org.kohsuke.groovy.sandbox.GroovyInterceptor.onGetProperty(GroovyInterceptor.java:52)
    at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onGetProperty(SandboxInterceptor.java:350)
    at org.kohsuke.groovy.sandbox.impl.Checker$4.call(Checker.java:241)
    at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:238)
    at org.kohsuke.groovy.sandbox.impl.Checker$checkedGetProperty.callStatic(Unknown Source)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallStatic(CallSiteArray.java:56)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:194)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:230)
    at Script1.run(Script1.groovy:99)
    at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.GroovySandbox.run(GroovySandbox.java:141)
    at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SecureGroovyScript.evaluate(SecureGroovyScript.java:165)
    at hudson.plugins.groovy.SystemGroovy.run(SystemGroovy.java:95)
    at hudson.plugins.groovy.SystemGroovy.perform(SystemGroovy.java:59)
    at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20)
    at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:779)
    at hudson.model.Build$BuildExecution.build(Build.java:206)
    at hudson.model.Build$BuildExecution.doRun(Build.java:163)
    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:534)
    at hudson.model.Run.execute(Run.java:1728)
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
    at hudson.model.ResourceController.execute(ResourceController.java:98)
    at hudson.model.Executor.run(Executor.java:405)
org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException:不允许脚本使用新的java.util.LinkedHashMap
位于org.jenkinsci.plugins.scriptsecurity.sandbox.whitelists.StaticWhitelist.rejectNew(StaticWhitelist.java:187)
位于org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.sandboxiterceptor.onNewInstance(sandboxiterceptor.java:130)
位于org.kohsuke.groovy.sandbox.impl.Checker$3.call(Checker.java:191)
位于org.kohsuke.groovy.sandbox.impl.Checker.checkedConstructor(Checker.java:188)
位于org.kohsuke.groovy.sandbox.impl.Checker$checkedConstructor$3.callStatic(未知源)
位于org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallStatic(CallSiteArray.java:56)
位于org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:194)
位于org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:214)
at DescriptionPriorities.(Script1.groovy)
at DescriptionPriorities.$INIT(Script1.groovy)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:498)
位于org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)
位于groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
位于org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.invoke(StaticMetaMethodSite.java:46)
位于org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.callStatic(StaticMetaMethodSite.java:102)
位于org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallStatic(CallSiteArray.java:56)
位于org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:194)
位于org.kohsuke.groovy.sandbox.impl.Checker$2.call(Checker.java:182)
位于org.kohsuke.groovy.sandbox.GroovyInterceptor.onStaticCall(GroovyInterceptor.java:33)
位于org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.sandboxiterceptor.onStaticCall(sandboxiterceptor.java:140)
位于org.kohsuke.groovy.sandbox.impl.Checker$2.call(Checker.java:180)
位于org.kohsuke.groovy.sandbox.impl.Checker.checkedStaticCall(Checker.java:177)
位于org.kohsuke.groovy.sandbox.impl.Checker$checkedStaticCall$2.callStatic(未知源)
位于org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallStatic(CallSiteArray.java:56)
位于org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:194)
位于org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:222)
at DescriptionPriorities.(Script1.groovy)
原因:java.lang.ExceptionInInitializeError
在sun.misc.Unsafe.EnsureClassified(本机方法)
位于sun.reflect.UnsafeFieldAccessorFactory.newFieldAccessor(UnsafeFieldAccessorFactory.java:43)
位于sun.reflect.ReflectionFactory.newFieldAccessor(ReflectionFactory.java:142)
位于java.lang.reflect.Field.acquireFieldAccessor(Field.java:1088)
位于java.lang.reflect.Field.getFieldAccessor(Field.java:1069)
位于java.lang.reflect.Field.get(Field.java:393)
位于org.codehaus.groovy.reflection.CachedField.getProperty(CachedField.java:54)
位于groovy.lang.MetaClassImpl.getProperty(MetaClassImpl.java:1805)
位于groovy.lang.MetaClassImpl.getProperty(MetaClassImpl.java:3735)
位于org.codehaus.groovy.runtime.InvokerHelper.getProperty(InvokerHelper.java:175)
位于org.codehaus.groovy.runtime.ScriptBytecodeAdapter.getProperty(ScriptBytecodeAdapter.java:456)
位于org.kohsuke.groovy.sandbox.impl.Checker$4.call(Checker.java:243)
位于org.kohsuke.groovy.sandbox.GroovyInterceptor.onGetProperty(GroovyInterceptor.java:52)
位于org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.sandboxiterceptor.onGetProperty(sandboxiterceptor.java:350)
位于org.kohsuke.groovy.sandbox.impl.Checker$4.call(Checker.java:241)
位于org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:238)
位于org.kohsuke.groovy.sandbox.impl.Checker$checkedGetProperty.callStatic(未知源)
位于org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallStatic(CallSiteArray.java:56)
位于org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:194)
位于org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:230)
在Script1.run(Script1.groovy:99)
位于org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.GroovySandbox.run(GroovySandbox.java:141)
位于org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SecureGroovyScript.evaluate(SecureGroovyScript.java:165)
位于hudson.plugins.groovy.SystemGroovy.run(SystemGroovy.java:95)
位于hudson.plugins.groovy.SystemGroovy.perform(SystemGroovy.java:59)
在hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20)
位于hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:779)
位于hudson.model.Build$BuildExecution.Build(Build.java:206)
位于hudson.model.Build$BuildExecution.doRun(Build.java:163)
位于hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:534)
位于hudson.model.Run.execute(Run.java:1728)
运行(FreeStyleBuild.java:43)
在hudson.model.ResourceController.execute(ResourceController.java:98)
运行(Executor.java:405)
对于管道,我可以转到“manage Jenkins”并批准脚本,但通常我会批准整个脚本或将一些方法签名列入白名单。但是
 <approvedSignatures>
    <string>new java.util.LinkedHashMap</string>
 </approvedSignatures>
evaluate(new File("path/to/file"))