Я хочу создать переменные среды, содержащие учетные данные, которые будут использоваться в конвейере. Эти переменные должны хранить разные значения в зависимости от ветви, для которой работает jenkins. Для этого я попробовал следующие варианты:
1) Вспомогательная функция для получения значения
def getURL() {
if (BRANCH_NAME == 'master')
return credentials('URL-prod')
return credentials('URL-dev')
}
pipeline {
environment {
URL=getURL()
}
...
}
2) Отдельный этап для настройки переменных среды
pipeline {
stage('Environment for Prod') {
steps {
script {
if (env.BRANCH_NAME == 'master') {
env.URL=credentials('URL-prod')
} else {
env.URL=credentials('URL-dev')
}
}
}
}
...
}
3) Тернарный оператор
pipeline {
environment {
URL="${env.BRANCH_NAME == 'master' ? credentials('URL-prod') : credentials('URL-dev')}"
}
...
}
При использовании все эти попытки завершаются неудачей, поскольку переменная сохраняет «вызов учетных данных» вместо возвращаемого значения, и я получаю эту ошибку:
error: Not a valid URL: parse https://%40credentials(<anonymous>=URL-dev): invalid URL escape "%40".
Если я сделаю это как "variable = credentials ('нечто')", это будет работать нормально. Эти проблемы возникают только при попытке сделать его условным.
Кто-нибудь может помочь? Что я делаю не так?