繁体   English   中英

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

[英]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 = osUsernamereturn 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM