Jenkins 插件中的变量替换

Variable substitution in Jenkins plugin

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

例如,如果变量 MY_VARIABLE 和值 myValue 被作业的另一部分注入到构建环境中,并且值 ${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);
    ...
}