如何从jenkins管道作业中的groovy脚本变量中获取默认值
所以问题是,如果不调用setControllerIP,我无法使用getControllerIP方法获取controllerIP变量的默认值。我在本地尝试了类似的groovy代码,它可以工作,但不能在jenkins服务器上工作。在我的groovy脚本中也尝试了很多其他组合,但都不起作用。 注意,我们使用的是Jenkins:pipeline共享groovy库插件 这是我在詹金斯的管道工作:如何从jenkins管道作业中的groovy脚本变量中获取默认值,jenkins,groovy,Jenkins,Groovy,所以问题是,如果不调用setControllerIP,我无法使用getControllerIP方法获取controllerIP变量的默认值。我在本地尝试了类似的groovy代码,它可以工作,但不能在jenkins服务器上工作。在我的groovy脚本中也尝试了很多其他组合,但都不起作用。 注意,我们使用的是Jenkins:pipeline共享groovy库插件 这是我在詹金斯的管道工作: node{ def controllerParameters = new com.compa
node{
def controllerParameters = new com.company.project.controller.DeploymentParameters() as Object
controllerParameters.setOSUsername('jenkins')
controllerParameters.setOSPassword('jenkins123')
controllerParameters.setBuildNumber(33)
//controllerParameters.setControllerIP('192.44.44.44')
//if I uncomment above line everything works fine but I need to get default value in a case
echo "I want the default value from other file"
controllerParameters.getControllerIP()
echo "my code hangs on above line"
}
这是我的另一个文件../controller/DeploymentParameters.groovy
package com.company.project.controller
import groovy.transform.Field
def String osUsername
def String osPassword
@Field String controllerIP = "NotCreated" //tried few combinations
//Open Stack username
def String setOSUsername(String osUsername) {
this.osUsername = osUsername
}
def String getOSUsername() {
return this.osUsername
}
//Open Stack password
void setOSPassword(String osPassword) {
this.osPassword = osPassword
}
def String getOSPassword() {
return this.osPassword
}
//Open Stack floating ip of master vm
void setControllerIP(String controllerIP) {
this.controllerIP = controllerIP
}
def String getControllerIP() {
return this.controllerIP
}
当groovy执行类似于
this.osUsername=osUsername
或返回this.osUsername
的行时,它实际上调用getter和setter,而不是直接访问字段
因此:
def String getOSPassword() {
return this.osPassword
}
行为如下:
def String getOSPassword() {
return this.getOsPassword()
}
代码进入无限递归(setter和assignment也是如此)
在您需要使用的setter和getter中
当groovy执行类似于
this.osUsername=osUsername
或返回this.osUsername
的行时,它实际上调用getter和setter,而不是直接访问字段
因此:
def String getOSPassword() {
return this.osPassword
}
行为如下:
def String getOSPassword() {
return this.getOsPassword()
}
代码进入无限递归(setter和assignment也是如此)
在您需要使用的setter和getter中
谢谢你的工作,它困扰了我好长一段时间:)谢谢你的工作,它困扰了我好长一段时间:)