我正在尝试比较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方法,结果相同。好像它粘在那些圆点上,认为这是某种性质。预先感谢
答案 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...")