Jenkins管道中的Groovy字符串比较

时间:2019-10-21 12:54:12

标签: groovy jenkins-pipeline

我正在尝试比较Jenkins管道中的两个字符串。该代码或多或少看起来像这样:

script {

def str1 = 'test1.domainname-test.com'
def str2 = 'test1.domainname-test.com'

if ( str1 == str2 ) {
    currentBuild.result = 'ABORT'
    error("TENANT_NAME $TENANT_NAME.domainname-test.com is already  defined in domainname-test.com record set. Please specify unique name. Exiting...")
}

}

str1由前面的命令提供,由于简单,我在这里跳过了。我收到此错误:

org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: No such field found: field java.lang.String domainname

我在做什么错?我也尝试过equals方法,结果相同。好像它粘在那些圆点上,认为这是某种性质。预先感谢

1 个答案:

答案 0 :(得分:7)

您缺少TENANT_NAME变量名周围的花括号。在您的示例中:

error("TENANT_NAME $TENANT_NAME.domainname-test.com is already  defined in domainname-test.com record set. Please specify unique name. Exiting...")

$符号应用于TENANT_NAME.domainname。并且由于TENANT_NAME是一个字符串,当您尝试从String类访问domainname属性时,Groovy解释了以下部分,并且您得到找不到这样的字段:字段java.lang.String域名

为避免此类问题,请用{}包裹变量名,这样就可以了。

error("TENANT_NAME ${TENANT_NAME}.domainname-test.com is already  defined in domainname-test.com record set. Please specify unique name. Exiting...")
相关问题