詹金斯沙箱模式下Groovy对象的方法invokeMethod

我正在尝试在我的jenkins共享库中实现装饰器模式。 我想装饰' timeout-try-catch '块,因此每当调用某个类的某个方法(装饰器不在乎那个类是那个方法)时,它都会自动包装在 timeout-try-catch 块。 但是为此,我需要重写装饰器类中的方法“ invokeMethod”。这是导致错误的Jenkinsfile中最小的代码段:

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或实现动态装饰器模式(它并不关心装饰类及其方法)?

kao10000 回答:詹金斯沙箱模式下Groovy对象的方法invokeMethod

假设您具有管理员访问权限,则可以特别批准使用该方法(请参阅https://stackoverflow.com/a/56023403/107331),但是请注意,如果您有非管理员用户在Jenkins实例上提交作业,则可以使用该方法一个危险的人,简单地批准。

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

本文链接:https://www.f2er.com/3116341.html

大家都在问