2015-05-28 36 views
4

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

例如,如果变量MY_VARIABLE与价值myValue注入构建环境的工作的另一部分和值${MY_VARIABLE}在我的插件任务配置中指定的话,我想这个插件替代${MY_VARIABLE}与变量的实际值为myValue

enter image description here

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

我的问题是Jenkins API提供了一个更好的解决方案,可以让我的插件用一个真实值替换一个变量?

回答

4

您可以检索构建环境 - 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); 
    ... 
} 
+0

感谢 - 这也正是我一直在寻找 –