我们为较旧版本的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}"
}
有没有办法访问注入的环境变量?我是否必须将此功能转换为构建包装器?
答案 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)
它也将被旧类型的构建使用。