Ваша ошибка просто из-за неправильного вложения блоков. в языках программирования, таких как Groovy (в данном случае), которые используют фигурные скобки для обозначения блоков, вы открываете блоки от самого внешнего к самому внутреннему, а затем закрываете от самого внутреннего до самого внешнего. Э.Г.
while(outer) {
if (inner1) {
echo "inner1"
} else {
echo "inner2"
}
}
Так что для вашего случая это будет выглядеть примерно так (длинные строки обернуты для удобства чтения):
stage("Deploy") {
if ("${ENVIRONMENT}"=='dev') {
wrap(
[
$class: 'VaultBuildWrapper',
configuration: configuration,
vaultSecrets: secrets
]
) {
withCredentials(
[
string(credentialsId: 'secret1_dev', variable: 'SECRET1'),
string(credentialsId: 'secret2_dev', variable: 'SECRET2'),
string(credentialsId: 'secret3_dev', variable: 'SECRET3'),
string(credentialsId: 'secret4_dev', variable: 'SECRET4'),
string(credentialsId: 'secret5_dev', variable: 'SECRET5'),
string(credentialsId: 'secret6_dev', variable: 'SECRET6')
]
) {
sh """
export DEPLOYMENT_ENVIRONMENT=${ENVIRONMENT}
source ~/.bashrc
echo 'parametrized credentials!'
"""
}
}
} else {
wrap(
[
$class: 'VaultBuildWrapper',
configuration: configuration,
vaultSecrets: secrets
]
) {
withCredentials(
[
string(credentialsId: 'secret1_qa', variable: 'SECRET1'),
string(credentialsId: 'secret2_qa', variable: 'SECRET2'),
string(credentialsId: 'secret3_qa', variable: 'SECRET3'),
string(credentialsId: 'secret4_qa', variable: 'SECRET4'),
string(credentialsId: 'secret5_qa', variable: 'SECRET5'),
string(credentialsId: 'secret6_qa', variable: 'SECRET6')
]
) {
sh """
export DEPLOYMENT_ENVIRONMENT=${ENVIRONMENT}
source ~/.bashrc
echo 'parametrized credentials!'
"""
}
}
}
}
Теперь, это кажется излишне дублированным, верно? Вы хотите иметь только одну копию вашего шага sh
и чтобы в ней были доступны правильные учетные данные, в зависимости от переменной ${ENVIRONMENT}
. Вы можете попытаться сохранить суффикс для учетных данных в переменной, а затем использовать GString для имени в каждом случае. Нечто подобное должно сделать свое дело (примечание: я не пробовал это, но я относительно уверен, что это должно работать):
stage("Deploy") {
final String credentialSuffix = ENVIRONMENT == 'dev' ? 'dev' : 'qa'
wrap(
[
$class: 'VaultBuildWrapper',
configuration: configuration,
vaultSecrets: secrets
]
) {
withCredentials(
[
string(credentialsId: "secret1_${credentialSuffix}", variable: 'SECRET1'),
string(credentialsId: "secret2_${credentialSuffix}", variable: 'SECRET2'),
string(credentialsId: "secret3_${credentialSuffix}", variable: 'SECRET3'),
string(credentialsId: "secret4_${credentialSuffix}", variable: 'SECRET4'),
string(credentialsId: "secret5_${credentialSuffix}", variable: 'SECRET5'),
string(credentialsId: "secret6_${credentialSuffix}", variable: 'SECRET6')
]
) {
sh """
export DEPLOYMENT_ENVIRONMENT=${ENVIRONMENT}
source ~/.bashrc
echo 'parametrized credentials!'
"""
}
}
}