在脚本管道的输入步骤中使用If语句中赋值的变量值



我有一个示例脚本管道,如下所示:

def a = 9
def b = 6
def c = 7
def d = 5
def userInputs(){
timeout(time:10, unit:'MINUTES'){
chosenInputs = input(
id:'Proceed', message: 'choose', parameters:[
[$class: 'StringParameterDefinition', defaultValue:"${name}", description:'Your name', name:'username'],
[$class: 'StringParameterDefinition', defaultValue:"${age}", description:'No of Pods', name:'userAge']])
}
}
node{
userInputs()
if (a > b){
name= "Peace"
age="4"
}
name = "{chosenInputs['username']}"
age = "{chosenInputs['userAge']}"
println ("User Input:n" + chosenInputs)

timeout(time:10, unit:'MINUTES')  {   
if (d < c){
name=${name}
age=${age}
println("Name: ${name}")
println("Age: ${age}")

}
}
//println("Name: $name")
//println("Age: $age")
}

我的目标是在条件为真时,将输入步骤中参数的默认值设置为if语句中变量(name和age)的值。然而,我得到的错误是groovy.lang.MissingPropertyException: No such property: name for class: groovy.lang.Binding at groovy.lang.Binding.getVariable(Binding.java:63)。我也尝试过将name和age声明为全局变量,但这也不起作用。

我做错了什么?谢谢你的帮助。

解决方案

你有几个问题。首先,在声明或初始化变量之前调用方法。其次,只有在条件求值为true时才声明和初始化变量。试试下面的

def a = 9
def b = 6
def c = 7
def d = 5
def userInputs() {
timeout(time:10, unit:'MINUTES') {
chosenInputs = input(id:'Proceed', message: 'choose', parameters:[
[$class: 'StringParameterDefinition', defaultValue:"${name}", description:'Your name', name:'username'],
[$class: 'StringParameterDefinition', defaultValue:"${age}", description:'No of Pods', name:'userAge']])
}
}
node {
if (a > b){
name= "Peace"
age="4"
} else {
name = ""
age = ""
}
userInputs()

// other code
}

最新更新