我正在开发一个新的 Jenkins 插件,该插件将在 Jenkins 作业的构建阶段执行,并且要求允许用户在插件的作业配置中指定变量名称(而不是文字值)。目的是,当作业执行时,用户指定的变量名称将被替换为与该变量关联的实际值,并且插件将在运行执行方法时使用该实际值。
例如,如果变量MY_VARIABLE
与价值myValue
被工作的另一部分和值注入到构建环境中${MY_VARIABLE}
在我的插件的作业配置中指定,那么我希望该插件替代${MY_VARIABLE}
变量的实际值是myValue
.
做了一些研究后,我了解到 Jenkins 不会自动用作业配置中的变量替换它们各自的值,这必须由插件处理。我无法弄清楚在我的插件中执行替换的最佳方法。到目前为止,我找到的唯一解决方案是解析从作业配置传递的字符串,以查看它是否与变量的正确模式匹配,然后在代码中查找该值。
我的问题是 Jenkins API 是否提供了更好的解决方案,允许我的插件用实际值替换变量?
您可以检索构建环境 -EnvVars
对象——它有一个方便的方法expand(String) http://javadoc.jenkins-ci.org/hudson/EnvVars.html#expand(java.lang.String).
这承认$VARIABLE
and ${VARIABLE}
-style 字符串并替换环境中的相应值。
例如:
@Override
public boolean perform(AbstractBuild build, Launcher launcher,
BuildListener listener) throws IOException, InterruptedException {
...
final EnvVars env = build.getEnvironment(listener);
String expandedDbUrl = env.expand(dbUrl);
...
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)