之前的文章记录了如何安装jdk、jmeter以及配置其环境变量。然后安装jenkins。我把jenkins安装在服务器上,方便共享。
通过xshell连接到服务器,输入命令
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key
安装后,在浏览器输入jenkins(https://服务器地址:port)地址,进入页面。此时系统提示你解锁,填写密码即可。
然后安装插件。我选择安装系统推荐插件,安装时间稍长。
接着设置登陆账号和密码,默认admin即可。
创建后,见到下图,代表jenkins安装成功了。
jenkins安装完毕后,继续安装ant。
https://mirror.bit.edu.cn/apache//ant/binaries/apache-ant-1.10.8-bin.zip
解压安装
unzip apache-ant-1.10.8-bin.zip
配置环境变量
vi /etc/profile
export ANT_HOME=/usr/bin/apache-ant-1.10.8
export PATH= A N T H O M E / b i n : ANT_HOME/bin: ANTHOME/bin:PATH
重启配置文件: source /etc/profile
接下来安装jmeter。
解压安装
unzip apache-jmeter-5.2.1.zip
安装完成后,配置jmeter。在Jmeter主目录下创建一个reports文件夹,然后在reports下创建三个文件夹jtl、html(存放测试报告目录)、test_scripts(存放测试脚本目录).
mkdir jtl html test_scripts
j接着把jmeter目录下的extras目录下的ant-jmeter-1.1.1.jar文件复制到ant目录下的lib文件夹中
cp /data/jmeter/apache-jmeter-5.2.1/extras/ant-jmeter-1.1.1.jar /usr/bin/apache-ant-1.10.8/lib
创建一个build.xml文件,添加如下内容:
<?xml version="1.0" encoding="UTF-8"?>
<project name="ant-jmeter-test" default="run" basedir=".">
<tstamp>
<format property="time" pattern="yyyyMMddhhmm" />
</tstamp>
<!-- 需要改成自己本地的 Jmeter 目录-->
<property name="jmeter.home" value="/data/jmeter/apache-jmeter-5.2.1" />
<!-- 发送给哪些人-->
<property name="mail_to" value="XXXX@163.com"/>
<!-- 抄送给哪些人,多个用逗号隔开/-->
<!--property name="mail_cc" value="XXXX@163.com,XXXX@qq.com"/-->
<property name="report.title" value="接口测试报告"/>
<!-- jmeter生成jtl格式的结果报告的路径-->
<property name="jmeter.result.jtl.dir" value="/data/jmeter/apache-jmeter-5.2.1/reports/jtl/" />
<!-- jmeter生成html格式的结果报告的路径-->
<property name="jmeter.result.html.dir" value="/data/jmeter/apache-jmeter-5.2.1/reports/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" />
<!--定义次build.xml要执行全部的任务-->
<target name="run">
<antcall target="test" />
<antcall target="report" />
<antcall target="mail" />
</target>
<!--第一个任务,执行test-->
<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="/data/jmeter/apache-jmeter-5.2.1/reports/test_scripts/" includes="*.jmx" />
<property name="jmeter.save.saveservice.output_format" value="xml"/>
</jmeter>
</target>
<!--引入外部jar包-->
<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-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>
<!--将控制台输出到文本中-->
<record name="${jmeter.result.html.dir}/${ReportName}${time}.txt" loglevel="info" append="no" action="start"/>
<!--执行第三个任务,发送邮件-->
<target name="mail">
<!--读取输出的控制台日志文件并写入邮件正文-->
<loadfile property="email_content" srcFile="${jmeter.result.html.dir}/${ReportName}${time}.txt" encoding="UTF-8"/>
<loadfile property="output" srcFile="${jmeter.result.html.dir}/${ReportName}${time}.html" encoding="UTF-8"/>
<!-- 此处配置SMTP服务器 POP3授权码 发送邮箱地址 端口 发送邮箱主题-->
<mail tolist="${mail_to}" mailhost="smtp.163.com" mailport="465"
user="XXXX@163.com" password="XXXX " ssl="true" subject="jmeter 测试报告 ${ReportName}${time}"
messagemimetype="text/html">
<from address="XXXX@163.com" />
<fileset dir="${jmeter.result.html.dir}">
<include name="${ReportName}${time}.html"/>
</fileset>
<message>
这是用Ant自动发送的测试报告
${ReportName}${time}
${output}
请勿回复,如有问题,请联系呀呀呀呀
</message>
</mail>
</target>
</project>
配置jmeter.properties文件。
vi /data/jmeter/apache-jmeter-5.2.1/bin/jmeter.properties
将jmeter.save.saveservice.output_format=csv 改为jmeter.save.saveservice.output_format=xml,并去掉前面的注释符号#。
导入javax.mail 的jar包支持发送email。下载地址:https://www.oracle.com/java/technologies/java-archive-eepla-downloads.html#license-lightbox
把下载好的jar包上传到/usr/bin/apache-ant-1.10.8//lib目录下。
最后Jenkins配置jdk、ant路径
配置jdk:
jdk别名任意取。java_home填写服务器的路径。
配置ant::
name随便取。ant_home填写服务器的路径。
新建Jenkins任务并执行
输入任意任务名称,选择第一个任务类型,点击确定。
选择构建触发器–增加构建步骤 选择invoke Ant。
Ant Version 不要用default,Targets 填写run。 Build File 填入在linux的build.xml路径, 填写完成后应用保存。
开始构建
至此svn+jmeter+ant+jenkins自动化环境搭建完成。