Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从jenkins管道作业中的groovy脚本变量中获取默认值_Jenkins_Groovy - Fatal编程技术网

如何从jenkins管道作业中的groovy脚本变量中获取默认值

如何从jenkins管道作业中的groovy脚本变量中获取默认值,jenkins,groovy,Jenkins,Groovy,所以问题是,如果不调用setControllerIP,我无法使用getControllerIP方法获取controllerIP变量的默认值。我在本地尝试了类似的groovy代码,它可以工作,但不能在jenkins服务器上工作。在我的groovy脚本中也尝试了很多其他组合,但都不起作用。 注意,我们使用的是Jenkins:pipeline共享groovy库插件 这是我在詹金斯的管道工作: node{ def controllerParameters = new com.compa

所以问题是,如果不调用setControllerIP,我无法使用getControllerIP方法获取controllerIP变量的默认值。我在本地尝试了类似的groovy代码,它可以工作,但不能在jenkins服务器上工作。在我的groovy脚本中也尝试了很多其他组合,但都不起作用。 注意,我们使用的是Jenkins:pipeline共享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
返回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中


谢谢你的工作,它困扰了我好长一段时间:)谢谢你的工作,它困扰了我好长一段时间:)