Jenkins kubernetes-plugin не понимает переменную env в скриптовом конвейере
Дженкинс версии 2.235.2
плагин kubernetes версии 1.26.4
Я пытаюсь параметризовать yamlFile, используемый в качестве шаблона модуля, с помощью переменной env на основе ветки, которую я создаю. Что у меня сейчас есть:
pipeline {
environment {
MASTER_BRANCH = "origin/dev"
BUILD_POD = "${env.GIT_BRANCH == env.MASTER_BRANCH ? 'jenkins/build-pod-prod.yaml' : 'jenkins/build-pod.yaml' }"
}
agent {
kubernetes {
idleMinutes 3
yamlFile env.BUILD_POD
defaultContainer 'docker'
}
}
}
Но для этого используется шаблон по умолчанию с контейнером jnlp. Я пробовал также поставить:
yamlFile env.BUILD_POD
yamlFile "${env.BUILD_POD}"
yamlFile "${BUILD_POD}"
yamlFile "$BUILD_POD"
yamlFile $BUILD_POD
Но ничего из этого не сработало. Не знаю, это какое-то недоразумение с моей стороны или ошибка.
Я также пытался сделать конвейер по сценарию, который кажется более универсальным, но сейчас я не могу ни выполнить то, что мне нужно.
Заранее всем спасибо.
1 ответ
Это не сработает, поскольку ваша переменная средыBUILD_POD
не заполняется при настройкеagent {...}
блокировать. Это приводит к ситуации, когда переменная установлена какnull
или какая-то пустая строка иJenkins
использует значение по умолчаниюjnlp
контейнер.
Что вам нужно сделать, так это установить эту переменную раньше, но это возможно толькоmaster
узел.
Это должно сработать.