Jenkins插件中的变量替换

我正在开发一个新的Jenkins插件,该插件将在Jenkins作业的构建阶段执行,并且要求允许用户在插件的作业配置中指定变量名称(而不是文字值)。 目的是当作业执行时,用户指定的变量名称将替换为与变量关联的实际值,然后插件将在运行perform方法时使用此实际值。

例如,如果具有值myValue的变量MY_VARIABLE被作业的另一部分注入到构建环境中,并且在我的插件的作业配置中指定了值${MY_VARIABLE} ,那么我希望该插件替换${MY_VARIABLE}使用myValue变量的实际值。

在此处输入图像描述

做了一些研究后,我理解Jenkins不会自动用作业配置中的变量替换它们各自的值,这必须由插件处理。 我无法解决的是在我的插件中执行替换的最佳方法。 到目前为止我找到的唯一解决方案是解析从作业配置传递的字符串,看它是否与变量的正确模式匹配,然后在我的代码中查找值。

我的问题是Jenkins API是否提供了一个更好的解决方案,允许我的插件替换具有实际值的变量?

您可以检索构建环境 – 一个EnvVars对象 – 它有一个方便的方法expand(String)

这可识别$VARIABLE${VARIABLE}样式的字符串,并替换来自环境的相应值。

例如:

 @Override public boolean perform(AbstractBuild build, Launcher launcher, BuildListener listener) throws IOException, InterruptedException { ... final EnvVars env = build.getEnvironment(listener); String expandedDbUrl = env.expand(dbUrl); ... }