[英]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.