缘由

因为之前搭建了接口测试平台,具体用例集执行仍然是调用 jenkins 来完成的,所以需要在服务端主动调用 jenkins,创建 job,远程构建

实现思路

服务端:编写一个帮助类,提供连接 jenkins 服务,创建 job 的功能,构建等方法,下图中的1
Jenkins 端:提供一个 baseJob,服务端获取这个 job,并复制生成一个新的 job
Jenkins 中的 job,其实是一个 xml 文件,通过复制这个 xml 文件并修改就可以复制并编写一个 job
baseJob
调用服务端的接口获取本次需要执行的用例,下图中的2
执行测试任务,下图中的3
任务完成后,上传测试结果,如果有失败的情况,则发送企业微信及钉钉消息通知,下图中的4

Jenkins client api介绍

这是一个 github 项目,可以用来

pom 引入

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

帮助类

package com.jolly.mobiletestservice.utils;

import com.offbytwo.jenkins.JenkinsServer;
import com.offbytwo.jenkins.model.Job;

import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.HashMap;
import java.util.Map;

public class JenkinsUtils {

    private static JenkinsServer jenkins;
    static {
        try {
            jenkins = new JenkinsServer(new URI("http://ip:port/"), "username", "password");
        } catch (URISyntaxException e) {
            e.printStackTrace();
        }
    }

    private JenkinsUtils() {

    }

    public static JenkinsServer getJenkins() {
        return jenkins;
    }

    public static String buildJobWithParameters(String jobName, Map<String, String> parameters) {
        try {
            Job job = jenkins.getJob(jobName);
            job.build(parameters);
            return job.getUrl();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return "";
    }

    public static void main(String[] args) {

    }
}

后续

碰到的问题


↙↙↙阅读原文可查看相关链接,并与作者交流