我正在开发一个新的Jenkins插件,该插件将在Jenkins作业的构建阶段执行,并且要求允许用户在插件的作业配置中指定变量名称(而不是文字值) 。目的是当作业执行时,用户指定的变量名将被替换为与变量关联的实际值,然后插件将在运行perform方法时使用此实际值。
例如,如果具有值MY_VARIABLE
的变量myValue
被作业的另一部分注入构建环境,并且在我的插件的作业配置中指定了值${MY_VARIABLE}
,然后我希望插件用${MY_VARIABLE}
替换myValue
变量的实际值。
完成了一些研究后,我了解到Jenkins不会自动将作业配置中的变量替换为各自的值,这必须由插件处理。我能够解决的问题是在我的插件中执行替换的最佳方法。到目前为止,我找到的唯一解决方案是解析从作业配置传递的字符串,看它是否与变量的正确模式匹配,然后在我的代码中查找该值。
我的问题是Jenkins API是否提供了一个更好的解决方案,允许我的插件替换具有实际值的变量?
答案 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);
...
}