您现在的位置是:网站首页 > 台长笔记
JAJ接口自动化可持续集成环境搭建简介(Jmeter+Ant+Jenkins)
接口自动化可持续集成环境搭建简介
软件环境:Jmeter3 + Ant +Jenkins
系统环境:Windows/Linux
- 部署流程:
- 安装java并设置环境变量
- 安装Jmeter并设置环境变量
- 安装Ant并设置环境变量
- 安装Jenkins
以上安装及设置,自行百度
踩过的坑:
1、Jmeter3只能安装java1.8及以下,不能用java1.9,会导致Jmeter无法启动
- Ant配置说明:
- 配置主要文件build.xml
- Ant的执行目录在哪,build.xml就应该在哪;比如
,此时build.xml应该在C:\Users\Administrator\目录下,再如
,此时build.xml应该在c:\Windows\Temp\目录下
- Build.xml详解自行百度,这里只标出我们需要改的地方(有注释的地方)
<?xml version="1.0" encoding="UTF-8"?> <project name="ant-jmeter-test" default="run" basedir="."> <tstamp> <format property="time" pattern="yyyyMMddhhmm" /> </tstamp> <property environment="env" /> <!-- 需要改成自己本地的 Jmeter 目录--> <property name="jmeter.home" value="/usr/local/apache-jmeter-3.1" /> <!-- jmeter生成jtl格式的结果报告的路径--> <property name="jmeter.result.jtl.dir" value="./report/jtl" /> <!-- jmeter生成html格式的结果报告的路径--> <property name="jmeter.result.html.dir" value="./report/html" /> <!-- 生成的报告的前缀--> <property name="ReportName" value="TestReport" /> <property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName}${time}.jtl" /> <property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName}${time}.html" /> <target name="run"> <antcall target="test" /> <antcall target="report" /> </target> <target name="test"> <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" /> <jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}"> <!-- 声明要运行的脚本。"*.jmx"指包含此目录下的所有jmeter脚本--> <testplans dir="." includes="*.jmx" /> <property name="jmeter.save.saveservice.output_format" value="xml"/> </jmeter> </target> <path id="xslt.classpath"> <fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/> <fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/> </path> <target name="report"> <tstamp><format property="report.datestamp" pattern="yyyy/MM/dd HH:mm"/></tstamp> <xslt classpathref="xslt.classpath" force="true" in="${jmeter.result.jtlName}" out="${jmeter.result.htmlName}" style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl"> <param name="dateReport" expression="${report.datestamp}"/> </xslt> <!-- 因为上面生成报告的时候,不会将相关的图片也一起拷贝至目标目录,所以,需要手动拷贝 --> <copy todir="${jmeter.result.html.dir}"> <fileset dir="${jmeter.home}/extras"> <include name="collapse.png" /> <include name="expand.png" /> </fileset> </copy> </target> </project>
- Jenkins部署介绍:
- 安装好之后,在浏览器中输入ip:8080即可访问jenkins首页
- 首次访问需要输入默认管理员密码,此密码在Jenkins\secrets\initialAdminPassword文件中
- 初始化插件,选择默认即可
- 创建管理员账号
至此,准备工作已完成
踩过的坑:
1、 Windows环境下,安装完jenkins后即可直接访问
2、 Linux环境下,理论上需要安装Tomcat这种web服务器才可正常访问,但我在实际部署过程中发现可以不用安装Tomcat,但是Linux因为权限管制的特别严格,需要注意Jenkins目录的权限问题,否则就会出现无法访问的情况
- Jenkins全局系统设置:
此处管理员邮件地址必填,涉及到后期启动发邮件功能
这个上面的按道理说应该只填一个就行,但是我没有验证。。。所以全都填了,然后在这里可以发测试邮件以此确认邮件系统是否正常
踩过的坑:
1、Jenkins自带的邮件系统按网上的描述,兼容性并不太好,比如我在部署期间,尝试将发送人邮件设置成QQ或者网易,都发送失败,具体原因并未查明,但是换成公司邮箱就正常了
- Jenkins全局工具配置:
- JDK设置:
- ANT设置:
- 以上设置仅针对Linux,Windows只要吧环境变量配置好了,这里是不用设置的
- 通过Jenkins创建新的任务:
1、
2、构建触发器
定时构建的意思就是按照设定的时间或周期来自动构建,时间格式可以点后面的问号了解,大概意思如下:
第一个*表示分钟,取值0~59
第二个*表示小时,取值0~23
第三个*表示一个月的第几天,取值1~31
第四个*表示第几月,取值1~12
第五个*表示一周中的第几天,取值0~7,其中0和7代表的都是周日
每隔5分钟构建一次:H/5 * * * *
每两小时构建一次:H H/2 * * *
每天中午12点定时构建一次:0 12 * * *
每天下午18点定时构建一次:0 18 * * *
3、构建环境
Linux环境这里需要选择之前我们添加的jdk和ant,Windows用默认的default就可以了
4、构建
AnT Version:Linux环境下选择ant,Windows选择default
Targets:应该也可以填,如果填的话应该对应的填写build.xml中
Build File:填写build.xml所在的位置
执行shell:这些填写要执行的shell脚本
- 构建后操作:
1、 Publish HTML reports
意思就是通过html页面把测试报告展现出来
2、 Editable Extended Email Publisher
这里重点就是选择触发通发邮件的条件,比如Failure –any 意思就是构建失败了发邮件,然后sent to就是选择收件人
- 手动构建,调试配置:
1、
点击这里就是立即构建
2、 构建结果会在构建历史中显示中,调试的时候我们在控制台输出里面分析和排查问题,直至调通
- SHELL脚本说明:
1、 使用脚本的目的:
因为Jenkins本身机制的原因,jmeter用例执行失败了并不代表任务构建失败,而我们的需求是希望用例执行失败就发邮件,基于此我们用shell脚本来实现我们的需求
2、 脚本思路:
因为Jenkins只有在构建失败的时候才会判断为失败而发邮件,那么我们可以在用例执行完毕之后,插入一个shell脚本先来检索一下测试报告中的结构是否有失败的标识,如果有失败的标识,我们则通过脚本将Jenkins的结果直接标记为失败,此时就能触发Jenkins的邮件条件,从而达到我们的目的
3、 脚本注释:
规定次脚本的执行方式为bash #!/bin/bash 获取当前路径 path=$(pwd) 将测试报告按时间排序,且取最新报告的文件名,此处” Peiwan_online”为文件名中关键字 jtlname=$(ls -lt ./report/jtl|grep Peiwan_online|head -n 1|awk '{print $9}') 拼接成完整的路径值 filepath=$path/report/jtl/$jtlname 打印一下,方便排查问题 echo $filepath 在测试报告中判断是否有”true ”,该字段为用例中断言的结果 grep -c "true " $filepath IF语句判断上一个结果的真假,为真则表示用例执行失败,exit 1 表示将Jenkins构建结果标识为失败,否则表示用例执行成功,exit 0 表示不干涉Jenkins if [ $? = 0 ] then echo "Failed" exit 1 else echo "Sucecced" exit 0 fi
踩过的坑:
不要在Windows下写好脚本之后再上传到Linux服务器上,因为两个系统对文本格式的处理不一样,会出现各种莫名其妙的问题
本篇笔记写于2019年2月,然后先发在CSDN,现在打算重整自己的站,所以重新发布在自己的站点了~~

点击排行
- 酷Q平台下自动发消息的应用插件
原始需求源于生活,后来也因为工作需要,需要一个QQ机
- 时间同步/锁定小工具
工作环境所致,经常出现本机时间与外网时间不一致的情
- 性能测试小工具
这个应该算是我写的第一个成型的工具,因为公司产品的
- <80后游戏>我的第一个网站
<80后游戏>是我的第一个站点,当时对架站一无所知,……
- TP5+AmazeUI仿做的后台管理系统
自学PHP本来是想自己去尝试做wordpress插件或者主题啥的,