技术分享 | 跨平台 API 对接(Java)
本章介绍基于 Jenkins API 调用的跨平台 API 对接。
基于 Jenkins 实现跨平台 API 对接
Jenkins 提供了远程访问应用编程接口(Remote Access API),能够通过 Http 协议远程调用相关命令操作 Jenkins 进行 Jenkins 视图、任务、插件、构建信息、任务日志信息、统计信息等,非常容易与其配合更好的完成 CI/CD 工作。
Jenkins API 总共有三种格式,分别为:
XML API
可以使用 xml 方式进行 API 的使用,这种方式的优势在于可以使用强大的 xpath 特性进行相关的访问控制。如我们下文将要介绍的 Jenkins 客户端底层就是基于 XML API 实现的。
JSON API
使用 JSON 方式进行操作,因为 json 基本上已经是应用之间数据交换的准标准格式之一,这种方式比较方便 Javascript 或者和其他应用的集成。
Python API 可以通过 python-jenkins 库对 Jenkins 进行控制操作。此库对 Jenkins 的 API 进行了进一步的包装,使用起来更加方便,但是一般需要安装 python-jenkins,并通过 python 脚本的执行来达到集成的方式。
为什么基于 Jenkins API 对接
频繁创建 Job 时,降低手工错误的概率
在工作中,如果需要创建的 Jenkins 的 Job 非常多,而大多又呈现有规律的方式时,Job 的创建成为了一个繁琐而又需要频繁操作的任务。在这种场景下,使用 API 结合脚本进行自动化可以提高效率,降低手工错误的几率。
满足特定条件时自动触发 Jenkins
如果需要动态的创建 Jenkins Job ,如根据中间结果在某个触发点自动生成,再如生成的 Job 需要使用的参数也是动态运行阶段才能取到值的场景下。
基于 Jenkins 自研产品或工具
如果产品或工具相关的功能,需要基于 Jenkins 进行研发,而且不希望用户直接使用 Jenkins,仅将 Jenkins 作为背后的执行引擎的场景,这种情况下也需要使用 Jenkins API 才能完成。
快速开始
下面我们通过实战学习下如何将 Spring Boot 和 Jenkins 进行集成,实现跨平台 API 对接。
Maven 依赖
我们先引入 Jenkins-client 用于和 Jenkins 进行交互。而 Jenkins-client 的底层实现其实就是调用 Jenkins XML API 来完成操作 Jenkins 的,如下表部分示例所示。
常用类和方法
JenkinsHttpClient:封装了调用 JenkinsAPI 的底层方法
JenkinsHttpClient(URI uri, String username, String password)
操作 API 方法示例
JenkinsServer:封装了调用 JenkinsAPI 的语义级别的方法,其本质调用的是 JenkinsHttpClient 类中的方法,只是根据操作 Jenkins 的功能进行了语义级别的封装
JenkinsServer(JenkinsHttpConnection client)
操作 API 方法示例
如何获取创建(更新) Jenkins Job 的请求参数数据
创建新 Job
进入 Job 配置
将 Job/Job 名称/ Configure 改为 Job/Job 名称/ Config.xml 并回车
请求参数数据
在 resources 目录下,jenkinsDir ,并添加 hogwarts_test_mini_start_test.xml 文件,此时我们为了测试命令可以正常被执行,需要在测试命令前加 eval 关键字,并将 ${testCommand}放在英文双引号括内部,如图中红框部分。
JenkinsUtil 示例代码
创建新 Job 并构建成功
构建参数页面查看参数数据
构建日志页面查看 pwd 命令执行情况
数据持久化技术就先讲到这里啦,下面留两个思考给大家,希望大家能用心练习一下哦~
尝试更新 Jenkins Job 配置信息,并在构建参数中新增用户名称字段
将 Jenkins API 调用和 Spring Boot 结合在一起,通过 postman 发送以下数据进行 Jenkins Job 的创建和更新操作
免费领取:性能测试+接口测试+自动化测试+测试开发+测试用例+简历模板+测试文档
http://qrcode.testing-studio.com/f?from=infoQ&url=https://ceshiren.com/t/topic/16565
评论