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узел.

Это должно сработать.

Другие вопросы по тегам