直接上干货ing
一、软件准备
jenkins 、ant 、jmeter
1、jenkins安装及配置
1.官网下载地址:https://jenkins.io/ 进入下载选择自己需要的版本
2.mac系统可以直接通过brew命令 brew install jenkins 下载安装(前提是有brew)
3.也可通过手动安装,这个根据自己情况进行安装网上也是一大堆安装方法可以查询适合自己
步骤也非常简单一直下一步就好了过程不详细介绍了,需要注意的地方我再“注”标识一下:
这里先介绍下他的常用基本命令后面安装插件可能会用的部分插件需要重启才可以使用
http://localhost:8080/exit #退出
http://localhost:8080/restart #重启
http://localhost:8080/reload #重新加载
注:这里的密码需要在终端sudo cat 对应的路径查看密码信息粘贴复制输入然后进行下一步就好了
输入后就会进入下一步安装模式我们选择系统自带推荐插件安装有很多都会用的到
安装完毕后我们需要再注册一个一个自己的管理账号
注:创建后进入jenkins这样我们的第一步就完成了,但是进入后因为大部分都是本机的在配置可能出现,插件下载不下来的情况无插件情况,这个时候怎么办哪原因是因为访问域名问题我们需要在jenkins里面系统配置里面修改下访问的地址就好
进入到jenkins里面我们选择 管理jenkins — 管理插件 — 高级 在下方找到update site 将url 填写为:http://updates.jenkins.io/update-center.json 提交保存 这样我们重启jenkins就能看见很多插件可以搜索到也可以更新下载了
当然也可以选择本地上传插件 .hpi插件
到这里我们的jenkins算是准备完毕了我们在准备其他的两个工具
2、ant的安装及配置
1.ant下载安装 官网下载地址:http://ant.apache.org/bindownload.cgi 上去下载自己所需的压缩包
2.然后解压到任意目录下
3.进行ant的环境变量配置,在终端输入 open .bash_profile 打开文件
# Setting ANT
export ANT_HOME=/usr/local/xxx/xxxx/apache-ant-1.9.9
export PATH=$ANT_HOME/bin:$PATH
修改完成后保存关闭再终端输入: source .bash_profile 回车进行保存,然后再终端输入 ant -version 验证是否配置成功输出对应 的版本信息说明设置成功了 ant 的安装和配置就完成了
3、jmeter的用例准备,随便准备一个用例,例子这里不再对jmeter进行详述,网上有很多教程可以查了我们主要说下jenkins+ant的配置信息
二、ant的build.xml和jmeter 的jmeter.properties文件配置信息及说明
1、ant build.xml 配置修改
1.cd 到ant bin目录下打卡build.xml文件进行编辑再编辑之前我们先保存一份build.xml 已做备份
2.打开build.xml文件进行编辑代码是以下内容:
<?xml version="1.0" encoding="UTF-8"?>
<project name="JmeterTest" default="all" basedir=".">
<tstamp>
<!- - 调用time 方法生成时间戳 - ->
<format property="time" pattern="yyyyMMddhhmmss" />
</tstamp>
<!- - 定义执行路径 - ->
<property name="jmeter.home" value="/usr/local/apache-jmeter-2.13" />
<!- - 定义jtl路径 - ->
<property name="jmeter.result.jtl.dir" value="${jmeter.home}/jmeterjtl" />
<!- - 定义html路径 - ->
<property name="jmeter.result.html.dir" value="${jmeter.home}/jmeterHtml" />
<!- - 定义生成文件名称 - ->
<property name="ReportName" value="TestCaseReport" />
<!- - 定义生成jtl文件名称 - ->
<property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName}${time}.jtl" />
<!- - 定义生成html文件名称 - ->
<property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName}${time}.html" />
<!- - 设置邮箱便宜报告生成后发送 - ->
<property name="mail_to" value=“[email protected]" />
<property name="ComputerName" value="andre" />
<target name="all">
<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="${jmeter.home}/jmeterjmx" includes="*.jmx" />
<!- - 设置输出文件格式,这个jmeter.properties 在jmeter文件目录下的extras下面这里需要注意的是, jmeter.properties这个文件下的这个配置也要改成xml默认系统是csv的- ->
<property name="jmeter.save.saveservice.output_format" value="xml" />
</jmeter>
</target>
<target name="report">
<!- - 设置生成html的样式展示信息汇总详情的一般有这个,jmeter-results-detail-report_21.xsl,其他自行选择 - ->
<xslt in="${jmeter.result.jtlName}" out="${jmeter.result.htmlName}" style="${jmeter.home}/extras/jmeter- results-detail-report_21.xsl" />
<copy todir="${jmeter.result.html.dir}">
<fileset dir="${jmeter.home}/extras">
<include name="collapse.png" />
<include name="expand.png" />
</fileset>
</copy>
</target>
</project>
修改完毕后保存就可以了,这里我在配置里面做了详细注释说明,是为了方便理解和记录,这里在自己写入的时候我们可以把这些注释删掉,不然会有其它的问题如图:
2、jmeter的jmeter.properties配置及修改
1.cd 到bin目录下 打开jmeter.properties 这个文件
修改
默认jmeter输出的格式是csv的我们把它改成xml
# jmeter.save.saveservice.output_format=csv
jmeter.save.saveservice.output_format=xml
下面是生成报表需要用到的一般都是用这些,需要其他的可以自己根据需求添加
jmeter.save.saveservice.bytes=true
jmeter.save.saveservice.label=true
jmeter.save.saveservice.label = true
jmeter.save.saveservice.latency = true
jmeter.save.saveservice.response_code = true
jmeter.save.saveservice.response_message = true
jmeter.save.saveservice.successful = true
jmeter.save.saveservice.thread_counts = true
jmeter.save.saveservice.thread_name = true
jmeter.save.saveservice.time = true
这里文件配置完毕了我们还需要配置一个文件来显示报表结果也在jmeter/bin目录下 jmeter- results-detail-report_21.xsl的这个文件下面我们替换或者把原有的showData 这些详情信息全部设置为y 默认有的都是 n我们设置为展示这样就能在结果报表上看到对应的详情数据信息了代码如下:
<xsl:template name="detail">
<xsl:variable name="allFailureCount" select="count(/testResults/*[attribute::s='false'])" />
<xsl:if test="$allFailureCount > 0">
<h2>Failure Detail</h2>
<xsl:for-each select="/testResults/*[not(@lb = preceding::*/@lb)]">
<xsl:variable name="failureCount" select="count(../*[@lb = current()/@lb][attribute::s='false'])" />
<xsl:if test="$failureCount > 0">
<h3><xsl:value-of select="@lb" /><a><xsl:attribute name="name"><xsl:value-of select="@lb" /></xsl:attribute></a></h3>
<table align="center" class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
<tr valign="top">
<th>Response</th>
<th>Failure Message</th>
<xsl:if test="$showData = 'y'">
<th>Response Data</th>
</xsl:if>
</tr>
<xsl:for-each select="/testResults/*[@lb = current()/@lb][attribute::s='false']">
<tr>
<td><xsl:value-of select="@rc | @rs" /> - <xsl:value-of select="@rm" /></td>
<td><xsl:value-of select="assertionResult/failureMessage" /></td>
<xsl:if test="$showData = 'y'">
<td><xsl:value-of select="./binary" /></td>
</xsl:if>
</tr>
</xsl:for-each>
</table>
</xsl:if>
</xsl:for-each>
</xsl:if>
</xsl:template>
这样就全部配置完毕了这个时候可以试验下我们是否能生成报告了我们在终端 cd 到ant bin 目录下输入ant
如图说明生成报告成功了我们去看下报告的内容是什么吧
到这了我们已经完成了通过配置ant和jmeter生成一个html的报告了,接下来我们就可以进行在已经凉了很久的jenkins上面进行配置
三、jenkins插件准备
ant #系统一般会自带用于执行ant
HTML Publisher plugin #用于生成html的报告
Performance #用于生成jtl的性能报告
需要ant我们在管理设置里面找到插件管理进行查询ant 然后找到进行下载
HTML Publisher plugin Performance 与ant下载插件一样我们都下载完毕后然后restart一下jenkins这样我们就可以进行使用了
在构建项目之前我们还需要在jenkins里面全局工具里面配置一下ant的安装路径方便后面使用
四、jenkins项目的构建
插件安装配置好了我们就可以进行构建了我们新建一个项目
构建后的操作我们选择之前用的html、jtl 这两个会进行生成报告
html的报告配置好了我们在配置下jtl的一些数据信息
保存退出这样就全部结束了,我们试试build一些看看是否能生成报告
如图说明构建成功了我们看看他的输出报告是什么
我们去这个目录下打开这个文件看看是什么样的报告信息
到这了就全部完毕了就已经实现jenkins自动化构建了,当然我们也可以优化下逻辑信息把他参数化变得更为灵活一点,废话不多说,上图;作为测试我们经常运行的两个环境和给个模块的都不一样所以我把它们参数化了变为可选择的执行某个报告不是去匹配所有全部执行了
配置完这两个参数后我是用shell的构建模式代码贴上:
#!/bin/bash
echo $env
echo $module
if [ -n "$env" ]
then
if [ -n "$module" ]
then
cd /usr/local/apache-ant-1.9.9/bin
sed -i '.bak' 's/jmeterjmx/jmeterjmx\/'"$env"'\/'"$module"'/g' build.xml # 注:这里是用了sed 的功能进行替换我需要的执行jmx文件路径这样可以灵活执行我根据上面选择的路径下的脚本文件,还有注意的是需要在bin的这个当前目录下创建一份build.xml.bak 否会出现mac 不允许你在没有备份文件下的情况修改源文件,然后系统会把你的上一次记录存到备份文件里面去这样就不会报错了
then
echo "替换build成功执行ant命令"
ant
if [ $? -eq 0]
then
echo "脚本执行失败"
else
echo "ant脚本执行成功"
sed -i '.bak' 's/jmeterjmx\/'"$env"'\/'"$module"'/jmeterjmx/g' build.xml
if [ $? -eq 0 ]
then
echo "恢复成之前的build.xml配置"
else
echo "恢复build文件失败"
fi
fi
else
echo "build文件替换失败"
fi
else
echo "请选择正确的模块"
fi
else
echo "请选择正确环境"
fi
cd /usr/local/apache-jmeter-2.13/jmeterHtml
find . -mtime +14 -name "*.html" -exec rm -Rf {} \; # 这里是定期删除这些文件信息
cd /usr/local/apache-jmeter-2.13/jmeterjtl
find . -mtime +14 -name "*.jtl" -exec rm -Rf {} \;
这个根据大家自己的情况自己再做调整,再展示下整体的build示例
到这里jenkins+ant+jmeter 的自动化就全部简陋的完成了麻雀虽小,五脏俱全。后续可以继续优化