Jenkins插件开发——提供对外访问接口
编辑前言
上一篇文章中整理了插件构建时如何在侧面板添加标签来实现插件的拓展,除了添加侧面板标签以外,Jenkins插件还支持通过暴露接口的方式来实现对插件的拓展。这种方式更加适合做基于jenkins的拓展开发。
实现效果
插件构建结束之后,可以通过URL http://localhost:8080/jenkins/job/{jobName}/{buildNumber}/{UrlName}/api/json 的方式来获取最终构建的数据。
jobName:是指本次构建的jenkinsJob的名称
buildNumber:指当前任务的构建序列号
UrlName:是我们在接口中配置的,用来标识url的路径
之后的/api/json表示输出为json格式,当然也可以使用/api/xml输出为xml格式。
JSON格式:
XML格式:
具体实现
创建HelloWorldAction3
具体代码如下:
/**
* 设置属性可以通过jenkins api访问
*
* @author yuanzhihao
* @since 2022/7/20
*/
@ExportedBean
public class HelloWorldAction3 implements Action {
private final String name;
private final String date;
public HelloWorldAction3(String name, String date) {
this.name = name;
this.date = date;
}
@Exported
public String getName() {
return name;
}
@Exported
public String getDate() {
return date;
}
// 表示HelloWorldAction3可以通过/api/json或者/api/xml的方式暴露出来
public Api getApi() {
return new Api(this);
}
@Override
public String getIconFileName() {
return "document.png";
}
@Override
public String getDisplayName() {
return "HelloWorld3";
}
// 配置URL地址
@Override
public String getUrlName() {
return "hello3";
}
}
-
HelloWorldAction3还是和之前一样,需要继承hudson.model.Action接口并实现对应的方法。
-
添加@ExportedBean注解,表示该类中的属性可以被远程JSON/XML API访问。
-
为成员变量提供getter方法,并且要在getter方法上面添加@Exported注解,表示该变量属性需要被暴露出去。
-
添加一个getApi的方法,此处返回包含当前类对象this的Api对象,注意这边的方法名必须要固定写成getApi。
为HelloWorldAction3添加action实例
在builder构建中,添加action的实例,和之前配置一样。
// 返回name和当前的时间戳
build.addAction(new HelloWorldAction3(name, new SimpleDateFormat("yyyy-MM-dd").format(new Date())));
验证
执行 mvn hpi:run 启动jenkins实例,构建插件工程,构建结束之后,通过URL访问,可以通过URL获取到对应的name和date信息,验证ok。
结语
Jenkins插件的这个拓展我觉得还是非常有用的,希望能够帮助到大家。
代码地址:https://github.com/yzh19961031/blogDemo/tree/master/jenkinsPlugin