我正在开发一个新的 Jenkins 插件,它将在 Jenkins 作业的构建阶段执行,并且需要允许用户在插件的作业配置中指定变量名(而不是文字值) .目的是当作业执行时,用户指定的变量名将被替换为与该变量关联的真实值,然后插件将在运行执行方法时使用该真实值。
例如,如果变量 MY_VARIABLE
值为 myValue
被作业的另一部分注入(inject)构建环境,值${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);
...
}
关于java - Jenkins 插件中的变量替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30512887/