![](/img/trans.png)
[英]How to get a json list from the curl in jenkins pipeline groovy script
[英]How to get default value from groovy script variable in jenkins pipeline job
所以问题是,如果不调用setControllerIP,就无法使用getControllerIP方法获取controllerIP变量的默认值。 我在本地尝试了类似的groovy代码,但它在我的jenkins服务器上不起作用。 在我的常规脚本中也尝试了很多其他组合,但没有任何效果。 请注意,我们使用的是Jenkins:管道共享的groovy库插件。
这是我在詹金斯上的管道工作:
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
或return this.osUsername
它实际上是调用getter和setter而不是直接进行字段访问。
所以这:
def String getOSPassword() {
return this.osPassword
}
表现如下:
def String getOSPassword() {
return this.getOsPassword()
}
然后您的代码将输入无限递归(对于setter和赋值相同)。
在设置者和获取者中,您需要使用Groovy直接字段访问运算符
def String getOSPassword() {
return this.@osPassword
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.