Java测试开发平台搭建(八) Jenkins

devtools/2025/1/7 15:09:23/

一、基本配置

1. 添加依赖

<dependency><groupId>com.offbytwo.jenkins</groupId><artifactId>jenkins-client</artifactId><version>0.3.8</version></dependency>

2. 常见类-JenkinsHttpClient

封装了调用JenkinsAPI的底层方法。
JenkinsHttpClient(URI uri, String username, String password)
get(String path)
getFile(URI path)
post(String path, boolean crumbFlag)
post(String path, D data, Class cls)
post_xml(String path, String xml_data, boolean crumbFlag)

3. 常用类-JenkinsServer

封装了调用JenkinsAPI的语义级别的方法。
JenkinsServer(JenkinsHttpConnection client)
getJob(String jobName)
createJob(String jobName, String jobXml, Boolean crumbFlag)
updateJob(String jobName, String jobXml, boolean crumbFlag)
getJobXml(String jobName)
deleteJob(FolderJob folder, String jobName, boolean crumbFlag)

4. 常用类-Job

Jenkins中job对应的实体类,有很多实用的语义级别的方法。
Job(String name, String url)
build(Job job)
build(Job job, Map<String, String> params)
getFileFromWorkspace(String fileName)
setClient(JenkinsHttpConnection client)

5. 获取job配置信息的方法

获取的xml做为模板使用,后面会讲到

  • 创建新job
  • 进入job配置
  • 将job/job名称/configure改为job/job名称/config.xml并回车

二、接口调用

1. controller

java">    @Operation(summary = "jenkins更新接口")@PostMapping("updateJenkins")public ResultDto updateJenkins(@RequestBody UpdateJenkinsDto updateJenkinsDto) throws IOException, URISyntaxException {if (StringUtils.isEmpty(updateJenkinsDto.getJobName())){// 这里应该是通过用户获取id,暂时先这样写return ResultDto.fail("jobName不能为空");}log.info("updateJenkins" + JSONObject.toJSONString(updateJenkinsDto));JenkinsUtil.build(updateJenkinsDto.getJobName(),updateJenkinsDto.getUserId(),updateJenkinsDto.getRemark(),updateJenkinsDto.getTestCommand());return ResultDto.success("成功");}

 2. Dto

java">package com.itestmini.testplatformbackend.dto.user;import com.itestmini.testplatformbackend.entity.BaseEntityNew;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;@Data
@Schema(description= "Jenkins更新类")
public class UpdateJenkinsDto extends BaseEntityNew {/*** 用户id*/@Schema(description= "userId", required = true, example = "123")private String userId;/*** jobName*/@Schema(description= "jobName", required = true, example = "test-1")private String jobName;/*** remark*/@Schema(description= "remark", required = true, example = "测试备注")private String remark;/*** 邮箱*/@Schema(description= "testCommand", required = true, example = "pwd")private String testCommand;}

3. Jenkins  util

java">package com.itestmini.testplatformbackend.util;import com.offbytwo.jenkins.JenkinsServer;
import com.offbytwo.jenkins.client.JenkinsHttpClient;
import com.offbytwo.jenkins.model.Job;
import org.springframework.core.io.ClassPathResource;import java.io.IOException;
import java.io.InputStream;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.HashMap;
import java.util.Map;/*** @author moso* @Date 2025/1/4 21:40*/public class JenkinsUtil {public static void build(String jobName, String userId, String remark, String testCommand) throws IOException, URISyntaxException {ClassPathResource classPathResource = new ClassPathResource("jenkinsDir/i_test_mini_jenkins_config.xml");InputStream inputStream = classPathResource.getInputStream();String jobConfigXml = FileUtil.getText(inputStream);String baseURI = "http://127.0.0.1:8080/";String userName = "admin";String password = "your password";JenkinsHttpClient jenkinsHttpClient = new JenkinsHttpClient(new URI(baseURI), userName, password);String jenkinsVersion = jenkinsHttpClient.getJenkinsVersion();System.out.println("jenkinsVersion == " + jenkinsVersion);JenkinsServer jenkinsServer = new JenkinsServer(jenkinsHttpClient);jenkinsServer.updateJob(jobName, jobConfigXml,true);Map<String, Job> jobMap = jenkinsServer.getJobs();Job job = jobMap.get(jobName);Map<String, String> map = new HashMap<>();map.put("userId", userId);map.put("remark", remark);map.put("testCommand", testCommand);job.build(map,true);System.out.println();}
}

4. 接口调用

执行结果

java"> 
https://gitee.com/moso520/test-platform-backend.git34035bb


http://www.ppmy.cn/devtools/148284.html

相关文章

前端学习笔记 antdeisgn vue 穿梭框应用

版本 antd 3.x vue 3.x 背景 一个商品有N个模板&#xff0c;这个模板由N个组织进行维护各自的数据&#xff0c;商品的展示过程中需要按照模板的顺序展示商品的相关详情 源码实现 穿梭框基于这个进行实现 源码 <template><div><a-transferv-model:target-…

STM32完全学习——使用定时器1精确延时

一、定时器的相关配置 首先一定要是递减定时器&#xff0c;递增的不太行&#xff0c;控制的不够准确&#xff0c;其次在大于10微秒的延时是非常准确的&#xff0c;小于的话&#xff0c;就没有那没准&#xff0c;但是凑合能用。误差都在一个微秒以内。使用高级定时器也就是时钟…

uniapp:跳转第三方地图

1.跳转第三方高德地图 //跳转地图 toMap(item){uni.navigateTo({url: (window.location.href https://uri.amap.com/navigation?to${item.lng},${item.lat},${item.shopName}&modecar&policy1&srchttps://gawl.gazhcs.com/wap/index.html&callnative0)}) },…

【Web安全】文件写入漏洞 ASP 网页病毒模拟(文件写入漏洞+FilesystemObject)

【Web安全】文件写入漏洞 ASP 网页病毒模拟&#xff08;文件写入漏洞FilesystemObject&#xff09; 原理 文件写入漏洞 文件写入漏洞是指攻击者通过某种方式在服务器上创建或修改文件的漏洞。攻击者可以利用此漏洞在服务器上写入恶意代码或文件&#xff0c;从而实现进一步的…

STM32-笔记23-超声波传感器HC-SR04

一、简介 HC-SR04 工作参数&#xff1a; • 探测距离&#xff1a;2~600cm • 探测精度&#xff1a;0.1cm1% • 感应角度&#xff1a;<15 • 输出方式&#xff1a;GPIO • 工作电压&#xff1a;DC 3~5.5V • 工作电流&#xff1a;5.3mA • 工作温度&#xff1a;-40~85℃ 怎么…

Spring MVC实战指南:构建高效Web应用的架构与技巧(三)

响应数据和结果视图(7种) 返回值分类 创建web.xml&#xff08;spring、过滤器解决乱码、配置控制器dispatcherServlet、加载springmvc.xml文件、配置启动加载&#xff09;创建springmvc.xml文件 <!--配置了内容&#xff0c;启动Tomcat服务器的时候&#xff0c;就会被加载--…

设计模式之访问者模式:一楼千面 各有玄机

~犬&#x1f4f0;余~ “我欲贱而贵&#xff0c;愚而智&#xff0c;贫而富&#xff0c;可乎&#xff1f; 曰&#xff1a;其唯学乎” 一、访问者模式概述 \quad 江湖中有一个传说&#xff1a;在遥远的东方&#xff0c;有一座神秘的玉楼。每当武林中人来访&#xff0c;楼中的各个房…

QML学习(七) 学习QML时,用好Qt设计器的属性

在初步学习QML时&#xff0c;特别建议看看Qt设计器&#xff0c;先利用Qt Quick设计师的使用&#xff0c;快速的对Qt Quick的各个组件及其常用的属性&#xff0c;有个初步的了解和认识。如果初始学习一上来直接以代码形式开干&#xff0c;很容易一头雾水。而设计器以最直白的所见…