Я хотел бы настроить переменную среды для моего конвейера Jenkins, но динамически на основе входного параметра сборки. Я пытаюсь настроить свой конвейер для установки переменной среды KUBECONFIG для команд kubectl .
Мой конвейер выглядит следующим образом (слегка изменен):
pipeline {
parameters {
choice(name: 'CLUSTER_NAME', choices: 'cluster1/cluster2')
}
stages {
// Parallel stages since only one environment variable should be set, based on input
stage ('Set environment variable') {
parallel {
stage ('Set cluster1') {
when {
expression {
params.CLUSTER_NAME == "cluster1"
}
}
environment {
KUBECONFIG = "~/kubeconf/cluster1.conf"
}
steps {
echo "Using KUBECONFIG: ${env.KUBECONFIG}"
}
}
stage ('Set cluster2') {
when {
expression {
params.CLUSTER_NAME == "cluster2"
}
}
environment {
KUBECONFIG = "~/kubeconf/cluster2.conf"
}
steps {
echo "Using KUBECONFIG: ${env.KUBECONFIG}"
}
}
}
}
stage ('Test env') {
steps {
sh "cat ${env.KUBECONFIG}"
}
}
}
}
Однако , в то время как этап, на котором я устанавливаю переменную среды, может ее распечатать, как только я перейду на другой этап, я получаю только null.
Есть ли способ обмена переменными env между этапами? Поскольку я хотел бы использовать команду KUBECONFIG по умолчанию (и не указывать файл / контекст в моих командах kubectl ), было бы намного проще найти способ динамически установить переменную env.
Я видел упомянутый плагин EnvInject , но не смог заставить его работать для конвейера и испытывал трудности с документацией.