接口自动化落地(三:jenkins集成httpclient项目并生成在线报告)
本篇文章是接于接口自动化落地(一:MySQL+MyBatis实现对测试用例数据的读取)和接口自动化落地(二:HttpClient+testNG实现对接口的测试及校验)之后低第三篇文章,主要讲解项目的业务代码在写完后,如果集成至jenkins。实现思路:一般情况下,jenkins是配置git地址,然后直接调用git的代码,打包并进行测试。但是我在实现过程中,由于公司的gitlab做了限制,必须使..
本篇文章是接于接口自动化落地(一:MySQL+MyBatis实现对测试用例数据的读取)和接口自动化落地(二:HttpClient+testNG实现对接口的测试及校验)之后低第三篇文章,主要讲解项目的业务代码在写完后,如果集成至jenkins。
实现思路:一般情况下,jenkins是配置git地址,然后直接调用git的代码,打包并进行测试。但是我在实现过程中,由于公司的gitlab做了限制,必须使用SSH key的方式进行代码拉取,然后在拉代码的过程中,因为jenkins默认的admin用户和我原本上传代码的root用户权限不一致,导致也无法成功拉取代码,所以换了一种解决方案:先通过git命令将代码拉至jenkins的目录下,然后直接使用jenkins去执行拉下来的代码。
这样的弊端在于,本地一共有两套代码,一套是正常的项目,一套是jenkins目录下专门用于jenkins执行的代码(不直接将jenkins文件内的代码作为正常项目存放地址的原因,也是因为权限问题),所以如果不是公司的git有特殊限制的情况下,不建议这样做。
在执行下面的流程之前,需要完成两件事:
1.将项目代码上传至git
2.安装tomcat
实现过程:
1.新建自由风格项目,在构建部分使用shell执行
执行以下命令:
cd ~/test //打开根目录
git pull //从git上拉取代码
cd ApiTest //打开项目文件
sudo /Applications/apache-maven-3.5.3/bin/mvn clean test //因为前文提到的权限问题,这里只能使用sudo命令,而且mvn得使用绝对路径
保存,然后执行此时应该可以运行成功
2.配置Tomcat并启动
因为jenkins一般是部署在linux上,生成的报告其他用户无法直接查看,tomcat作为一个web中间件,将jenkins生成的报告拷贝至tomcat服务上,用以让其他用户进行查看。
下载完成后,因为tomcat默认的端口号是8080,与jenkins冲突了,所以我们首先在conf文件下的server.xml文件中配置tomcat的默认端口号
cd ~/apache-tomcat-9.0.10/conf
vim server.xml
找到如下部分:
将默认的8080修改为可用端口号,在这里我修改为8088,保存后退出。
切换至bin目录下,执行startup.sh文件,启动tomcat。
此时浏览器访问localhost:8088,可以看到tomcat启动成功!
3.将jenkins生成的测试报告拷贝至tomcat
在jenkins的工程配置部分,shell中添加以下语句
//获取最后一次构建的id
result=$(curl -s http://10.106.10.184:8080/job/JavaApiTest/lastBuild/buildNumber --user admin:admin)
//tomcat目录下新建文件用以保存测试报告
sudo mkdir /Applications/apache-tomcat-9.0.10/webapps/ROOT/$result
//将jenkins生成的目录拷贝至tomcat内
sudo cp /Users/Shared/Jenkins/test/ApiTest/test-output/index.html /Applications/apache-tomcat-9.0.10/webapps/ROOT/$result/index.html
然后构建项目,执行完,构建成功~
然后访问tomcat:http://10.106.10.184:8088/65/index.html,可以看到生成的报告
在这里说明一下,为什么要用tomcat。如果不用tomcat,直接访问jenkins生成的报告也是可以的,但是一般jenkins会部署在linux服务器上,无法直接访问或者访问需要权限。tomcat作为一个web中间件,浏览权限是公开的。
有疑问的小伙伴可以留言,我会针对于问题不断优化本篇文章,谢谢!
更多推荐
所有评论(0)