• Jenkins插件开发——提供对外访问接口


    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";
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 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())));
    
    • 1
    • 2

    验证

    执行 mvn hpi:run 启动jenkins实例,构建插件工程,构建结束之后,通过URL访问,可以通过URL获取到对应的name和date信息,验证ok。
    在这里插入图片描述

    结语

    Jenkins插件的这个拓展我觉得还是非常有用的,希望能够帮助到大家。

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

  • 相关阅读:
    BS EN 14323:2021 室内用三聚氰胺纸贴面木基板材检测
    Mybatis快速入门
    javascript 中的纯函数
    科技的崛起:国内机器视觉蓬勃发展
    VR虚拟现实技术在法院技能培训中的应用
    《探索虚拟与现实的边界:VR与AR谁更能引领未来?》
    思腾云计算
    25、Java 初始化块和静态初始化块详解,超详细(案例多、官方教程)
    快速排序平均时间复杂度分析
    【photoshop学习】用 Photoshop 做的 15 件创意事
  • 原文地址:https://blog.csdn.net/qq_32238611/article/details/125899764