【问题标题】:Variable substitution in Jenkins pluginJenkins 插件中的变量替换
【发布时间】:2015-05-28 17:05:40
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: java jenkins jenkins-plugins


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-13
      相关资源
      最近更新 更多