工作流程步骤可以访问EnvironmentContributingAction提供的环境变量吗?

时间:2015-07-09 19:12:32

标签: jenkins jenkins-workflow

我们为较旧版本的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}"
}

有没有办法访问注入的环境变量?我是否必须将此功能转换为构建包装器?

2 个答案:

答案 0 :(得分:3)

EnvironmentContributingAction目前仅限于AbstractBuild s,WorkflowRun不是,因此我刚刚提交的待审JENKINS-29537,您的插件需要以某种方式进行修改。选项包括:

  • 让构建器添加简单Action,然后注册EnvironmentContributor buildEnvironmentFor(Run, …)使用Run.getAction(Class)检查其存在。
  • 切换到定义范围内环境变量的SimpleBuildWrapper,然后使用wrap步骤从Workflow调用它。
  • 取决于workflow-step-api并定义具有可比功能的自定义工作流Step,但直接返回List<String>或您的上下文中有意义的内容。 (code sample

答案 1 :(得分:0)

PR-2975合并后,您可以使用新界面: void buildEnvVars(@Nonnull Run<?, ?> run, @Nonnull EnvVars env, @CheckForNull Node node)

它也将被旧类型的构建使用。