我正在尝试比较詹金斯管道中的两个字符串。代码大致如下所示:
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方法,结果相同。好像它粘在那些圆点上,认为这是某种性质。提前致谢
您缺少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
是字符串,当您尝试domainname
从String类访问属性时,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...")