前言
当前,自动化已经是测试必备技能之一了,除了要会设计、开发自动化测试框架,搭建自动化持续集成环境也是必须的,本篇,将演示如何搭建自动化持续集成环境;
因为大多数公司是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