我们使用了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/