Groovy строка подкачки в группе захвата - PullRequest
1 голос
/ 30 апреля 2019

Я пытаюсь поменять местами часть строки, когда Дженкинс запускает конвейер.Вот что у меня есть:

def secrets = [
    'abc-${env}'      : [secret('my-api', 'MY_API_URL')],
    'xyz${my_env}kv'  : [secret('my-other-api', 'MY_OTHER_API_URL')
]

Переменная env рядом с abc, похоже, корректно поменяется местами, а my_env между xyz и kv - нет.

Дженкинс выдает мне эту ошибку:

Причина: org.jenkinsci.plugins.azurekeyvaultplugin.AzureKeyVaultException: Не удалось получить секретный my-other-api из хранилища https://xyz$ {my_env} kv.vault.azure.net/, сообщение об ошибке: отсутствует указанная группа захвата '}'

Есть идеи, почему my_env не заменяется?

1 Ответ

0 голосов
/ 30 апреля 2019

Похоже, вы пытаетесь использовать строку с интерполированной ${my_env} переменной. Чтобы это работало, вам нужно использовать двойные кавычки вместо одинарных. Например, если переменная my_env установлена ​​в dev, то следующая конструкция:

def secrets = [
    "abc-${env}"      : [secret('my-api', 'MY_API_URL')],
    "xyz${my_env}kv"  : [secret('my-other-api', 'MY_OTHER_API_URL')]
]

создаст карту типа:

def secrets = [
    'abc-dev': [secret('my-api', 'MY_API_URL')],
    'xyzdevkv': [secret('my-other-api', 'MY_OTHER_API_URL')]
]

(Одиночные кавычки всегда означают обычную строку Java, в то время как двойные кавычки с переменной внутри компилируются в GString, и переменная корректно интерполируется.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...