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

bauul · April 13, 2018 · Last by replied at May 02, 2018 · 6307 hits

缘由

因为之前搭建了接口测试平台,具体用例集执行仍然是调用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 #1 · April 13, 2018 作者

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

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

bauul 回复

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

bauul 回复

这波操作666

bauul #5 · April 13, 2018 作者
卡斯 回复

指哪一波?😀

bauul 回复

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

bauul #7 · April 13, 2018 作者
路小圣 回复

可以啊,欢迎来试试

bauul #8 · April 13, 2018 作者
卡斯 回复

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

bauul 回复

666

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

bauul #11 · April 13, 2018 作者

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

谢谢楼主,学习了

bauul #13 · April 13, 2018 作者
tttttttttggggg 回复

😊

期待开源学习下

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up