Jenkins插件中的变量替换

时间:2015-05-28 17:05:41

标签: java jenkins jenkins-plugins

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

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

enter image description here

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

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

1 个答案:

答案 0 :(得分: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);
    ...
}