Jenkins 如何检查生成参数在文件中是否可用

Jenkins 如何检查生成参数在文件中是否可用,jenkins,jenkins-pipeline,Jenkins,Jenkins Pipeline,我有一个管道脚本,可以使用参数,也可以不使用参数。所以我必须检查参数是否可用 我尝试了if(getBinding().hasVariable(“myparameter”),但这导致了一个异常 org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: Scripts not permitted to use method groovy.lang.Binding getVariables 是否有其他方法检查作业是否参

我有一个管道脚本,可以使用参数,也可以不使用参数。所以我必须检查参数是否可用

我尝试了
if(getBinding().hasVariable(“myparameter”)
,但这导致了一个异常

org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: Scripts not permitted to use method groovy.lang.Binding getVariables
是否有其他方法检查作业是否参数化?

请参阅:

构建参数 如果您将管道配置为使用Build with parameters选项接受参数,那么这些参数可以作为同名Groovy变量访问

更新

  • ☑这个构建是参数化的→ 添加参数→ 字符串参数:

    • 名称:
      STRING\u参数
    • 默认值:
      STRING\u参数\u值
  • 管道→ 定义:
    管道脚本
    → 脚本:

def stringParameterExists=true
def otherParameterExists=true
试一试{
println“STRING\u参数=$STRING\u参数”
}
捕获(丢失属性异常e){
stringParameterExists=false
}  
试一试{
println“NOT_EXISTING_PARAMETER=$NOT_EXISTING_PARAMETER”
}
捕获(丢失属性异常e){
otherParameterExists=false
}
println“stringParameterExists=$stringParameterExists”
println“otherParameterExists=$otherParameterExists”
控制台输出:

[Pipeline] echo
  STRING_PARAMETER=STRING_PARAMETER_VALUE
[Pipeline] echo
  stringParameterExists=true
[Pipeline] echo
  otherParameterExists=false
[Pipeline] End of Pipeline
Finished: SUCCESS

在最新版本的jenkins
println(getBinding().hasVariable(“myparameter”))中,允许使用
,并且不再给出错误。

较新版本通过
参数
变量提供参数。如果未定义参数,则返回到配置的默认值(另请参见)。

我就是这样做的:

def myParam = false
if (params.myParam != null){
    myParam = params.myParam
}
当您可以按照上面的建议在管道中定义参数时,为什么要这样做呢


在某些情况下,无论参数是否定义,您都希望管道文件正常工作。也就是说,如果您正在使用来自不同Jenkins作业的管道脚本,并且您不想让人们定义该参数…

问题在于:避免空参数或在管道作业中未配置参数

解决方案:您有两个选项可以将默认配置设置为声明性管道中的变量

选项1。使用jenkins功能设置参数范围回退,这会影响jenkins中作业的管道配置(如果在声明性管道中配置内容,则会覆盖作业参数中的配置)

选项2自己保护变量,检查变量是否为空,然后在管道中分配变量,此功能不会影响作业配置,我认为这样更好:

some_flag = params.SOME_FLAG != null ? params.SOME_FLAG.toBoolean() : false

否。“echo myparameter”或“if(myparameter!=null)”失败,原因是“groovy.lang.MissingPropertyException:没有这样的属性:类的myparameter:groovy.lang.Binding”@domruf您是对的。我显然把什么弄糊涂了。查看我答案的更新。我发现可以使用将方法调用添加到白名单。但这需要管理员权限。您能更新您撰写本文时的最新版本吗?Jenkins 2.263.1(2020-12-03)不适用。params(和其他答案一样)在Jenkins ver。2.131,它总是给我假消息。参数是否存在。
some_flag = params.SOME_FLAG != null ? params.SOME_FLAG.toBoolean() : false