如果存在参数化的构建参数,如何在Jenkins Workflow中进行检测?

Cra*_*ues 4 jenkins jenkins-workflow

检测参数化版本中的参数是否存在的最佳方法是什么?我发现最接近的解决方案是在groovy中执行此操作:

node {
   groovy.lang.Binding myBinding = getBinding()
   boolean mybool = myBinding.hasVariable("STRING_PARAM1")
   echo mybool.toString()
   if (mybool) {
       echo STRING_PARAM1
       echo getProperty("STRING_PARAM1")
   } else {
       echo "STRING_PARAM1 is not defined"
   }

   mybool = myBinding.hasVariable("DID_NOT_DEFINE_THIS")
   if (mybool) {
       echo DID_NOT_DEFINE_THIS
       echo getProperty("DID_NOT_DEFINE_THIS")
   } else {
       echo "DID_NOT_DEFINE_THIS is not defined"
   }
}
Run Code Online (Sandbox Code Playgroud)

是使用getBinding()正确的API来执行此操作,还是有更好的方法?

amu*_*niz 5

您可以使用try-catch检查参数是否存在:

try {
    echo TEST1
    echo 'TEST1 is defined'
} catch (err) {
    echo 'TEST1 is not defined'
}
Run Code Online (Sandbox Code Playgroud)


Dan*_*dez 4

当您使用Pipelines时,您可以访问对象:params,它是一个Java映射,然后您可以使用:containsKey方法,即:

if(params.containsKey("STRING_PARAM1")) {
   echo "STRING_PARAM1 exists as parameter with value ${STRING_PARAM1}"
} else {
   echo "STRING_PARAM1 is not defined"
}
Run Code Online (Sandbox Code Playgroud)