我正在建立一个新的版本。运行一个简单的shell命令非常有效,如下所示:
stage("Demo") { sh "echo 'Hi There'" }
我一直试图将我的shell脚本“打包”到自己的类中,以使事情更加整洁。问题在于,当尝试从一个类中执行相同的完全相同的Shell脚本时,jenkins失败,并显示以下内容:
org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException:未分类的方法java.lang.Class sh java.lang.String
这是一个简单的示例,在将上述方法移入其自己的类后,对我来说失败了:
stage('Demo stage') { Tools.PrintMe("Hi There") } public class Tools { public static void PrintMe(String message) { sh "echo " + message } }
脚本管理器中也没有提供将此拒绝方法列入白名单的选项。
有办法解决这个问题吗?还是有我不知道的限制?
@Crait在您自己的类中调用预定义的步骤,您需要将脚本对象路径传递到您的类。
因此,请尝试以下操作:
stage('Demo stage') { Tools.PrintMe(this, "Hi There") } public class Tools { public static void PrintMe(def script, String message) { script.sh "echo " + message } }