Jenkins插件开发——支持参数化
编辑前言
在jenkins构建的时候,我们可以将一些经常会变化的参数值提取出来,使用参数化的方式,在每次构建的时候赋值。jenkins本身是支持这种能力的,本篇文章主要整理下对于自己开发的jenkins插件如何支持参数化。
具体实现
具体实现很简单,在jenkins的api中,提供如下几个方法,首先第一个是hudson.model.AbstractBuild#getEnvironment,该方法入参是hudson.model.TaskListener,返回类型是hudson.EnvVars,返回当前jenkins所有环境变量列表,具体实现可以参考下jenkins的源码。 第二个方法是hudson.Util#replaceMacro(java.lang.String, java.util.Map<java.lang.String,java.lang.String>),该方法传入变量参数和环境变量列表,该方法会返回参数变量解析之后的值。 所以,具体实现就是先获取所有的环境变量列表,然后再使用提供的replaceMacro方法解析变量,具体代码如下:
@Override
public boolean perform(AbstractBuild<?, ?> build, Launcher launcher, BuildListener listener) throws InterruptedException, IOException {
PrintStream logger = listener.getLogger();
// 参数化
EnvVars environment = build.getEnvironment(listener);
String param = Util.replaceMacro(name, environment);
logger.println("Hello " + param);
...
return true;
}
验证
本次的代码还是继续沿用之前的博客中的源码,具体可以参考下我之前的jenkins插件相关的博客。
通过 mvn hpi:run 启动jenkins,通过 http://localhost:8080/jenkins/ 访问jenkins。
创建一个freestyle的任务,勾选This project is parameterized,添加一个String Parameter类型的参数,我这边添加一个参数名为name,默认值为yuanzhihao的参数。 之后在build标签,Add build step下面选择自己开发的插件MyPlugin,填入参数化的参数${name}。 构建项目,传入参数值。 构建结束,可以看到参数已经生效。
结语
代码地址:https://github.com/yzh19961031/blogDemo/tree/master/jenkinsPlugin