一尘不染

将命令移到jenkinsfile中的自定义类时命令失败

jenkins

我正在建立一个新的版本。运行一个简单的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
    }
}

脚本管理器中也没有提供将此拒绝方法列入白名单的选项。

有办法解决这个问题吗?还是有我不知道的限制?


阅读 232

收藏
2020-07-25

共1个答案

一尘不染

@Crait在您自己的类中调用预定义的步骤,您需要将脚本对象路径传递到您的类。

因此,请尝试以下操作:

stage('Demo stage') {
    Tools.PrintMe(this, "Hi There")   
}

public class Tools {
    public static void PrintMe(def script, String message) {
        script.sh "echo " + message
    }
}
2020-07-25