繁体   English   中英

Groovy沙箱阻止workflow-cps-global-lib-plugin中的类

[英]Groovy sandbox blocks classes in workflow-cps-global-lib-plugin

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

我得到了这个例外:

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

通过阅读插件的文档,我得到的印象是这个通用的repo是可信的,并且那里定义的类不会被沙盒化。

另外,似乎如果在源文件中定义了没有“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
    }
}

为什么这是在沙盒中运行以及我如何解决它?

如果你没有得到它旁边的批准按钮,它就没有阻塞。 它很可能无法找到它。

插件网站上提到的实际文档说明布局是:

(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目录。

如果您在类中提供了一个静态方法来创建实例(即工厂模式),那么它应该绕过安全插件的那个方面。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM