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); ... }