Groovy对象&x27;Jenkins沙盒模式下的s方法invokeMethod

Groovy对象&x27;Jenkins沙盒模式下的s方法invokeMethod,jenkins,groovy,Jenkins,Groovy,我正试图在我的jenkins共享库中实现decorator模式。 我想修饰“timeout try catch”块,所以每当调用某个类的某个方法时(修饰器不关心该类是什么类,该方法是什么),它就会自动包装在timeout try catch块中。 但为此,我需要重写decorator类中的方法“invokeMethod”。以下是Jenkins文件中导致错误的最小代码: node { sh 'echo "the content"' new MyClass().doSomething

我正试图在我的jenkins共享库中实现decorator模式。 我想修饰“timeout try catch”块,所以每当调用某个类的某个方法时(修饰器不关心该类是什么类,该方法是什么),它就会自动包装在timeout try catch块中。 但为此,我需要重写decorator类中的方法“invokeMethod”。以下是Jenkins文件中导致错误的最小代码:

node {
    sh 'echo "the content"'
    new MyClass().doSomething() // output: doSomething
}

class MyClass {
    def invokeMethod(String name, args) {
        println name
    }
}
我得到以下错误: org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException:脚本不允许使用方法groovy.lang.GroovyObject invokeMethod java.lang.String java.lang.Object(MyClass doSomething)


这是不是可以在不退出Jenkins的“沙盒”模式的情况下覆盖invokeMethod或实现dynamic decorator模式(它不关心类及其方法的装饰)的方法?

假设您有管理员权限,您可以去专门批准该方法的使用(请参阅),不过要注意,如果您的Jenkins实例上有非管理员用户提交作业,那么简单地批准该方法可能是危险的

另一个选项是批准使用此装饰器的每个脚本