Jenkins插件开发——支持参数化

Jenkins插件开发——支持参数化

前言

在jenkins构建的时候,我们可以将一些经常会变化的参数值提取出来,使用参数化的方式,在每次构建的时候赋值。jenkins本身是支持这种能力的,本篇文章主要整理下对于自己开发的jenkins插件如何支持参数化。

具体实现

具体实现很简单,在jenkins的api中,提供如下几个方法,首先第一个是hudson.model.AbstractBuild#getEnvironment,该方法入参是hudson.model.TaskListener,返回类型是hudson.EnvVars,返回当前jenkins所有环境变量列表,具体实现可以参考下jenkins的源码。
Jenkins插件开发——支持参数化_第1张图片
第二个方法是hudson.Util#replaceMacro(java.lang.String, java.util.Map),该方法传入变量参数和环境变量列表,该方法会返回参数变量解析之后的值。
Jenkins插件开发——支持参数化_第2张图片
所以,具体实现就是先获取所有的环境变量列表,然后再使用提供的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的参数。
Jenkins插件开发——支持参数化_第3张图片
之后在build标签,Add build step下面选择自己开发的插件MyPlugin,填入参数化的参数${name}。
Jenkins插件开发——支持参数化_第4张图片
构建项目,传入参数值。
Jenkins插件开发——支持参数化_第5张图片
构建结束,可以看到参数已经生效。
Jenkins插件开发——支持参数化_第6张图片

结语

代码地址:https://github.com/yzh19961031/blogDemo/tree/master/jenkinsPlugin

你可能感兴趣的:(Jenkins,jenkins)