我使用下面的代码加载Groovy文件并传递参数
jenkins中的管道脚本
require_once __DIR__ . "/mongodb/";
其中$ {params.hos_nam}是构建参数 并且installpackage groovy如下所示
/tmp/Provsioning/e.groovy
@NonCPS
def ld() {
def pck = load '/tmp/Provsioning/e.groovy';
return pck.xmlParseData("${params.hos_nam}");
}
node {
stage ('Deploying Packages'){
def aby = ld();
}
}
我不确定为什么会出现以下错误
public class ReadXMLFile{
def xmlParseData(String g){
installPackage(a,b,c);
input 'proceed'
aemRestart(b);
}
def installPackage(String a, String b,String c){
//some code
}
def aemRestart(String a){
//some code
}
}
完成:失败
答案 0 :(得分:0)
您在管道的两个步骤之间的变量中保存的对象必须是Serializable。
class A{
def f(){
return [hello:'world']
}
}
node{
def a = new A()
def b = a.f()
}
可能会抛出NotSerializableException,因为A类非Serializable
解决这个问题,将所有与非可序列化变量一起使用的代码放入@NonCPS注释函数中:
class A{
def f(){
return [hello:'world'] //hashmap itself is serializable
}
}
@NonCPS
def f1(){
def a = new A()
return a.f()
}
node{
def b = f1()
}
PS:我没有检查代码,只是为了给你一个例子..