Дженкинс - Задать переменные среды из движка учетных данных условно - PullRequest
0 голосов
/ 30 марта 2020

Я хочу создать переменные среды, содержащие учетные данные, которые будут использоваться в конвейере. Эти переменные должны хранить разные значения в зависимости от ветви, для которой работает 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 ('нечто')", это будет работать нормально. Эти проблемы возникают только при попытке сделать его условным.

Кто-нибудь может помочь? Что я делаю не так?

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