前言
当前,自动化已经是测试必备技能之一了,除了要会设计、开发自动化测试框架,搭建自动化持续集成环境也是必须的,本篇,将演示如何搭建自动化持续集成环境;
因为大多数公司是java项目,所以,我在idea中使用springboot开发了几个简单的mock接口,接口自动化测试框架使用【接口自动化测试实战】中实战3的框架,代码仓库我用gitee演示,如果你的是github或者gitlab,也是可以的;
思路介绍
想必部分公司的情况是:开发先把代码提交到代码仓库、测试再通过jenkins去拉取对应的分支、然后测试运行自动化测试框架执行测试脚本、最后查看报告。。。
可否开发提交了代码,后续的任务都自动执行呢?当然是可以的,即:(docker版后续更新)
1、开发提交代码
2、jenkins自动从代码仓库(gitee)拉取对应分支的代码
3、自动打包
4、自动部署
5、自动从gitee拉取接口自动化测试框架及脚本
6、自动执行测试脚本
7、生成测试报告
8、把报告发布在一个服务下大家通过浏览器访问(也可以发送邮件);
下面就介绍这个流程的具体实现。
环境准备
安装jdk、tomcat、jenkins、maven、git
jdk:https://www.cnblogs.com/uncleyong/p/10732951.html
tomcat:https://www.cnblogs.com/uncleyong/p/10742650.html
jenkins:https://www.cnblogs.com/uncleyong/p/10742867.html
maven:https://www.cnblogs.com/uncleyong/p/10743181.html
git(务必源码安装git,yum安装的版本低,会出问题):https://www.cnblogs.com/uncleyong/p/10767747.html
jenkins安装插件
安装gitee插件(因为我的代码仓库是gitee)

maven插件和git插件在安装jenkins的时候已经自动安装好了
maven插件

git插件

jenkins全局工具配置
系统管理→全局工具配置
git

maven


jdk

jenkins和gitee通讯方式
这里演示使用https,如果你要使用ssh,需要做配置,即提前将Jenkins所在服务器的key添加到gitee上,配置免密登录
先生成秘钥

把公钥添加到gitee

详细请参考:https://www.cnblogs.com/uncleyong/p/6891958.html
jenkins任务创建及配置
输入任务名称、选择【创建一个maven项目】

源码管理选择Git、输入远程仓库地址

远程仓库地址获取方式如下:

点击添加→Jenkins


输入gitee的账号密码

或者提前在下面通过账号密码添加,依次点击【系统】--【全局凭据】


选择类型为用户名和密码、输入你自己gitee的用户名和密码


如果是ssh方式,Private Key填写Jenkins主机的root用户私钥(/root/.ssh/id_rsa),用户是启动tomcat服务的用户,我是用root安装、启动的

选择刚刚添加的认证、选择master分支

构建

创建一个存放jar包的目录

构建成功执行shell脚本(里面部分命令是调试用的,可以自行删除,比如:显示当前路径pwd)

点击【应用】、【保存】

现在没项目服务

【立即构建】

失败了

查看控制台输出

错误信息

解决方案:https://stackoverflow.com/questions/59763531/maven-dependencies-are-failing-with-501-error

上面提示,自2020年1月15日起,中央存储库不再支持通过纯HTTP进行的不安全通信,并且要求对存储库的所有请求都通过HTTPS进行加密。
于是我们在构建过程中所依赖的settings文件中,加入以下配置:

内容

参考:https://www.cnblogs.com/flashfish/p/12202305.html
<mirror>
<id>central</id>
<name>Maven Repository Switchboard</name>
<url>https://repo1.maven.org/maven2/</url>
<mirrorOf>central</mirrorOf>
</mirror>
重新构建,构建成功
放jar包的目录下可以看到已经有jar包,且服务也启动起来了

浏览器访问成功了

触发构建项目
上面,是我们手动点击构建后,jenkins去gitee拉取的代码,这一小节,演示触发构建,即开发提交代码后就自动化拉取代码、构建。。。
先把之前的服务停了,jar包删了

点击【配置】

构建触发器,可以看到在Gitee webhook中要填写的url

点击【生成】

生成密码

点击【应用】、【保存】

gitee中配置,在演示的java项目中,【管理】--【WebHooks】--【添加】

填入上面jenkins中的url和密码

上面点击【添加】后,点击下方【测试】

可以看到,jenkins自动构建了

构建成功

服务也启动起来了

浏览器访问成功

下面我们模拟开发提交代码
先把之前的服务停了,jar包删了

我们将部门改为“持续集成部”

add--commit--push代码,另外,git基础请参考:https://www.cnblogs.com/uncleyong/p/10854115.html

代码仓库可以看到更新


jenkins自动构建

服务也启动了

url访问,可以看到部门变成了“持续集成部”

持续集成shell脚本优化
现在遗留的问题是,每次需要先手动停止服务、手动删除jar包
我们可以写一个简单的shell脚本

内容如下(里面部分命令是调试用的,可以自行删除,比如:显示当前路径pwd):

命令中,改为执行这个shell脚本

性别改为“女”

add--commit--push

自动构建成功

日志

服务启动起来了

浏览器请求,性别显示是“女”

下一篇,将集成自动化测试框架,自动运行测试脚本、生成测试报告、发布报告。
自动化必备:自动化持续集成环境搭建(下):git + maven + jenkins