SpringBoot|封装接口实现自动创建job并且自动构建功能

一、前言

  在我们做测试平台的时候,需要把自动创建job以及构建这种功能封装成一个接口给外部调用,下面是简单的实现方案

二、具体步骤

  1、熟悉代码调用步骤

    传送门

  2、改造JenkinsUtil工具类

复制代码
package com.example.demo.util;

import com.offbytwo.jenkins.JenkinsServer;
import com.offbytwo.jenkins.client.JenkinsHttpClient;
import com.offbytwo.jenkins.model.Job;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
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;

public class JenkinsUtil {


    private static final Logger logger = LoggerFactory.getLogger(JenkinsUtil.class);


    public static void build( String jobName,String userId)throws URISyntaxException, IOException {

        ClassPathResource classPathResource = new ClassPathResource("jenkinsConfigDir/weifang_test_jenkins_show.xml");
        InputStream inputStream = classPathResource.getInputStream();
        String jobConfigXml = FileUtil.getText(inputStream);

        String baseUrl = "http://localhost:8080/jenkins/";
        String userName = "durant";
        String password = "123456";

        JenkinsHttpClient jenkinsHttpClient = new JenkinsHttpClient(new URI(baseUrl),userName,password);
        String JenkinsVersion = jenkinsHttpClient.getJenkinsVersion();
        logger.info(JenkinsVersion);
        JenkinsServer jenkinsServer = new JenkinsServer(jenkinsHttpClient);
        jenkinsServer.createJob(jobName,jobConfigXml,true);

        Map<String, Job> jobMap= jenkinsServer.getJobs();
        Job job = jobMap.get(jobName);
        Map<String,String> map = new HashMap<>();
        map.put("userId",userId);

        job.build(map,true);



    }
}
复制代码

  3、定义创建并且构建job的DTO类

复制代码
package com.example.demo.dto;


import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

@ApiModel(value = "jenkins构建类",description = "请求类")

@Data
public class BuildDto {

    @ApiModelProperty(value = "用户id",example = "durant",required = true)
    private String userId;

    @ApiModelProperty(value = "job名称",example = "durant",required = true)
    private String jobName;
    
}
复制代码

  4、在Controller层

    @PostMapping("build")
    @ApiOperation("调用jenkins构建job")
    public ResultDto build(@RequestBody BuildDto buildDto) throws IOException, URISyntaxException {

        log.info("调用jenkins构建job 入参" + JSONObject.toJSONString(buildDto));
        JenkinsUtil.build(buildDto.getJobName(),buildDto.getUserId());
        return ResultDto.success("成功");
    }

  5、postman调用

  6、服务日志

   7、实际效果

 三、总结

  在测试平台开发的道路上还任重道远,需要学习的知识还很多

posted @   未来可期_Durant  阅读(295)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示