Jenkins文件,检查全局变量是否存在

Jenkins文件,检查全局变量是否存在,jenkins,jenkins-pipeline,jenkins-plugins,jenkins-groovy,Jenkins,Jenkins Pipeline,Jenkins Plugins,Jenkins Groovy,我有一个定义了全局变量的文件超时 class Globals { static String TEST_TIMEOUT = "" } 我正在使用共享库中的函数 我使用全局变量设置函数的超时。由于其他项目使用的共享库没有定义Globals变量,因此我在函数文件中定义了环境变量作为超时的默认值 env.TESTS_TIME_OUT="10080" 然后在函数中,我想检查Globals变量是否存在,我想使用值作为超时,如果不存在,则使用默认值 if(Globals.TEST_TIMEOUT

我有一个定义了全局变量的文件超时

class Globals {
    static String TEST_TIMEOUT = ""
}
我正在使用共享库中的函数 我使用全局变量设置函数的超时。由于其他项目使用的共享库没有定义Globals变量,因此我在函数文件中定义了环境变量作为超时的默认值

env.TESTS_TIME_OUT="10080"
然后在函数中,我想检查Globals变量是否存在,我想使用值作为超时,如果不存在,则使用默认值

if(Globals.TEST_TIMEOUT){
   env.TESTS_TIME_OUT= "${Globals.TEST_TIMEOUT}"   
}
timeout(time: "${env.TESTS_TIME_OUT}", unit: 'MINUTES') {
.
.
.
}
我以前在env参数上成功地实现了这一点,但这次我遇到了一个错误

No such field found: field java.lang.Class TEST_TIMEOUT 
有什么办法解决这个问题吗?或者用其他方法检查全局变量是否存在


谢谢

您可以捕获
groovy.lang.MissingPropertyException
,如果
Globals
Globals不存在,将抛出该异常。测试超时

试试看{
env.TESTS\u TIME\u OUT=Globals.TEST\u超时
}
catch(groovy.lang.MissingPropertyException e){
环境测试\u超时=“10080”
}
您甚至可以将此模式移动到通用函数中

def默认值(闭包c,def defaultVal){
试一试{
返回c()
}
catch(groovy.lang.MissingPropertyException e){
返回默认值
}
}
。。。可以这样称呼:

env.TESTS\u TIME\u OUT=GetPropDefault({Globals.TEST\u TIMEOUT},'10080')
如果有许多不同的全局变量需要相似处理,这可能会很有用。避免编写许多
try
/
catch

需要闭包以确保表达式
Globals.TEST\u TIMEOUT
将在
try
/
catch
块的
getPropOrDefault
中计算,而不是在函数调用之前