我们使用了https://github.com/jenkinsci/workflow-cps-global-lib-plugin,并使用它(git repo)为管道作业创建通用助手。尝试使用工作流程库回购中的类时,使用Groovy沙箱时遇到问题。

我收到此异常:

org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: unclassified new <path_to_my_class>


通过阅读该插件的文档,我得到的印象是该公共存储库是受信任的,并且在那里定义的类不会被沙盒化。

另外,似乎如果在源文件中定义类时未使用“ class”关键字,则仅实现通过沙盒安全性检查的方法,否则不执行。但是,如何在不定义类和构造函数的情况下对构造函数进行参数化?

我想在不被沙箱阻止的情况下使以下用例起作用。

在“ / org / mylib”目录中,我通过以下实现定义了类MyClass.groovy。

package org.mylib

class MyClass implements Serializable {
    MyClass(String someString) {
        this.data = someString
    }

    String data

    String data() {
        return this.data
    }
}


为什么要在沙箱中运行它,以及如何解决?

最佳答案

如果您没有旁边的批准按钮,则表示没有阻止。它很可能找不到它。

实际的documentation mentioned on the plugin site指出布局是:

(root)
+- src                     # Groovy source files
|   +- org
|       +- foo
|           +- Bar.groovy  # for org.foo.Bar class
+- vars
|   +- foo.groovy          # for global 'foo' variable
|   +- foo.txt             # help for 'foo' variable
+- resources               # resource files (external libraries only)
|   +- org
|       +- foo
|           +- bar.json    # static helper data for org.foo.Bar


所以我目前的猜测是您应该将其移至src目录。

关于jenkins - Groovy沙箱会阻止工作流-cps-global-lib-plugin中的类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41892317/

10-16 23:56
查看更多