zoukankan      html  css  js  c++  java
  • 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、实际效果

     三、总结

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

    知道、想到、做到、得到
  • 相关阅读:
    linux 安装软件三种方法
    megalo -- 网易考拉小程序解决方案
    层叠上下文 Stacking Context
    关于document.write
    学习块格式化上下文(BlockFormattingContext)
    jQuery 源码分析 8: 回头看jQuery的构造器(jQuery.fn,jQury.prototype,jQuery.fn.init.prototype的分析)
    简化版的Flappy Bird开发过程(不使用第三方框架)
    jQuery 源码分析 7: sizzle
    jQuery 源码分析6: jQuery 基本静态方法(二)
    jQuery 源码分析5: jQuery 基本静态方法(一)
  • 原文地址:https://www.cnblogs.com/Durant0420/p/15144384.html
Copyright © 2011-2022 走看看