持续集成 [接口测试平台二期] Jenkins 远程创建 job 及构建

bauul · 2018年04月13日 · 最后由 回复于 2018年05月02日 · 4302 次阅读

缘由

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

实现思路

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

Jenkins client api介绍

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

  • 连接 jenkins 服务
  • job 操作:获取,创建,构建等

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) {

    }
}

后续

  • 同时对接多个 jenkins 服务?对接一个 jenkins,即 master,由这个 jenkins 作为任务调度,对接其他的 jenkins,即 slave

碰到的问题

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 14 条回复 时间 点赞
bauul #14 · 2018年04月13日 Author

想一起共事吗?现在有机会噢:https://testerhome.com/topics/11840
不会自动化也没关系噢,熟悉 app 测试,发布就可以噢,快快发简历来吧😈

通过接口触发 Jenkins Job,我们现在也是这么玩

bauul 回复

专科是否可以,可以的话想去试试

bauul 回复

这波操作 666

bauul #10 · 2018年04月13日 Author
卡斯 回复

指哪一波?😀

bauul 回复

你发帖的这一波啊,开个技术帖子招人的操作

路小圣 回复

可以啊,欢迎来试试

卡斯 回复

我也是向论坛里别的小伙伴学的,😜

bauul 回复

666

jenkins 有 restful 接口和命令行工具,也有 java 的 lib,做的还是非常好的。

bauul #11 · 2018年04月13日 Author

嗯嗯,通过这个jenkin-client-api操作很方便

谢谢楼主,学习了

期待开源学习下

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册