Сравнение заводных строк в конвейере Дженкинса - PullRequest
1 голос
/ 21 октября 2019

Я пытаюсь сравнить две строки в конвейере Дженкинса. Код более или менее выглядит следующим образом:

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

Что я делаю не так? Я тоже пробовал метод равных, тот же результат. Как будто он застрял на тех точках, думая, что это какая-то собственность. Заранее спасибо

1 Ответ

7 голосов
/ 21 октября 2019

Вам не хватает фигурных скобок, окружающих имя переменной 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 является строкой, Groovy интерпретирует следующую часть, когда вы пытаетесь получить доступ к свойству domainname из класса String, и вы получаете Не найдено такое поле: field java.lang.String domainname исключение.

Чтобы избежать таких проблем, оберните имя вашей переменной с {}, и все будет в порядке.

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