Учетные данные на основе выбора параметров среды - PullRequest
0 голосов
/ 17 сентября 2018

У нас есть конвейерный скрипт, у которого есть параметр выбора, основанный на среде. Например:

parameters {
    choice(choices: 'Development\nStaging\nProduction', description: 
    "Select an environment to run tests against.", name: 'Environment')
}

Исходя из этого выбора, я хотел бы загрузить несколько переменных, обозначаемых средой, но мне трудно выбрать «параметризованные учетные данные». Я пытаюсь сделать что-то вроде этого:

stage("Run tests") {
  environment {
    ENV="${params.Environment}"
    DBPASS=credentials("$ENV:dbpass") # <-- this doesn't work!
    MQPASS=credentials("$ENV:mqpass")
    ...
    ...
    5 more credentials here based on environment
    }
}

Где учетные данные в основном следуют формату "$ ENV: variable". Я попробовал варианты этого (например, "${ENV}:dbpass"), но ни один, кажется, не работает.

При этом я бы хотел избежать создания 10 credentials вариантов в моем разделе parameters.

У кого-нибудь есть предложения по параметризации имен учетных данных?

1 Ответ

0 голосов
/ 18 сентября 2018

Согласно этому документу, в декларативном конвейере значения параметров доступны в контексте шагов (что подразумевает, что они недоступны ни в каком другом контексте, например, в среде).

Вместо предоставления кредитов с помощью директивы среды, вы можете использовать шаг withCredentials, который позволяет назначать учетные данные для переменных, и, поскольку это шаг, вы вызываете его в контексте шагов, где вытакже можете получить доступ к значениям ваших параметров.

Например:

pipeline {
    agent any
    parameters {
        choice(choices: 'Development\nStaging\nProduction', 
               description: "Select an environment to run tests against.",
               name: 'Environment')
    }
    stages {
        stage ('Run tests') {
            steps {
                withCredentials([string(credentialsId: "${params.Environment}:dbpass", variable: 'DBPASS',
                                 string(credentialsId: "${params.Environment}:mqpass", variable: 'MQPASS')]) {
                        // Do stuff
                    }
                }
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...