【发布时间】:2021-07-27 14:47:26
【问题描述】:
我正在使用一个函数在 Jenkins 管道中设置环境变量。我注意到,如果我声明没有参数的函数,它可以工作,但如果我声明接受 1 个字符串参数的函数,Jenkins 在运行我的管道时会抛出错误 No such DSL method 'get_metadata' found among steps。
def get_metadata(String type) {
switch(type) {
case "env":
return "environment name";
break;
case "domain":
return "domain name";
break;
case "cloud":
return "cloud name";
break;
default:
return "none";
break;
}
}
pipeline {
environment {
PROJECT=get_metadata()
CLOUD=get_metadata(type: "cloud")
DOMAIN=get_metadata(type: "domain")
ENVIRONMENT=get_metadata(type: "env")
}
}
当我将其称为 get_metadata() 时,没有参数的函数有效
def get_metadata() {
<...>
}
Jenkins 版本是 2.289.2。
【问题讨论】:
-
您的
get_metadata没有为type定义默认值,因此对PROJECT=get_metadata()的调用会引发错误,因为如果没有type参数,您将无法按原样使用它。 -
@NoamHelmer 这是正确答案,因此您可能希望将评论转换为答案。
标签: jenkins jenkins-pipeline jenkins-groovy jenkins-job-dsl