Может ли шаг рабочего процесса получить доступ к переменным среды, предоставляемым EnvironmentContributingAction?

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

При попытке преобразовать нашу сборку в рабочий процесс у меня возникли проблемы с доступом к этим переменным:

node {
    // this step queries an API and puts the results in
    // environment variables called FE1|BE1_INTERNAL_ADDRESS
    step([$class: 'SomeClass', parameter: foo])

    // this ends up echoing 'null and null'
    echo "${env.FE1_INTERNAL_ADDRESS} and ${env.BE1_INTERNAL_ADDRESS}"
}

Есть ли способ получить доступ к переменной среды, которая была введена? Должен ли я вместо этого преобразовать эту функциональность в оболочку сборки?


person SaucyWrong    schedule 09.07.2015    source источник


Ответы (2)


EnvironmentContributingAction в настоящее время ограничен AbstractBuilds, а WorkflowRun - нет, поэтому ожидается JENKINS-29537 который я только что подал, ваш плагин нужно будет каким-то образом изменить. Варианты включают:

  • Попросите строителя добавить вместо этого простой Action, затем зарегистрируйте EnvironmentContributor, buildEnvironmentFor(Run, …) которого проверяет его наличие с помощью Run.getAction(Class).
  • Переключитесь на SimpleBuildWrapper, который определяет переменные среды в области действия, затем вызовите его из Workflow, используя шаг wrap.
  • Зависите от workflow-step-api и определите собственный рабочий процесс Step с сопоставимой функциональностью, но напрямую возвращающий List<String> или что-то другое, что имеет смысл в вашем контексте. (пример кода)
person Jesse Glick    schedule 21.07.2015

Поскольку PR-2975 объединен, вы можете использовать новый интерфейс: void buildEnvVars(@Nonnull Run<?, ?> run, @Nonnull EnvVars env, @CheckForNull Node node)

Он будет использоваться и в старых типах сборок.

person Jimilian    schedule 24.08.2017
comment
У меня есть последующий PR с изменением подписи на buildEnvironment(Run, EnvVars). - person Jesse Glick; 25.08.2017