因项目需要,现学现用,搭建的集成环境,并且根据项目需要做了适当的优化。特整理记录,方便自己,方便他人。。。


软件环境:Jmeter3 + Ant +Jenkins

系统环境:Windows/Linux

 

部署流程:

  1. 安装java并设置环境变量
  2. 安装Jmeter并设置环境变量
  3. 安装Ant并设置环境变量
  4. 安装Jenkins

以上安装及设置,自行百度

踩过的坑:

1、Jmeter3只能安装java1.8及以下,不能用java1.9,会导致Jmeter无法启动

 

Ant配置说明:

  1. 配置主要文件build.xml
  2. Ant的执行目录在哪,build.xml就应该在哪;比如Jmeter+Ant+Jenkins可持续集成环境搭建记录,此时build.xml应该在C:\Users\Administrator\目录下,再如Jmeter+Ant+Jenkins可持续集成环境搭建记录,此时build.xml应该在c:\Windows\Temp\目录下
  3. 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部署介绍:

  1. 安装好之后,在浏览器中输入ip:8080即可访问jenkins首页
  2. 首次访问需要输入默认管理员密码,此密码在Jenkins\secrets\initialAdminPassword文件中
  3. 初始化插件,选择默认即可
  4. 创建管理员账号

至此,准备工作已完成

踩过的坑:

  1. Windows环境下,安装完jenkins后即可直接访问
  2. Linux环境下,理论上需要安装Tomcat这种web服务器才可正常访问,但我在实际部署过程中发现可以不用安装Tomcat,但是Linux因为权限管制的特别严格,需要注意Jenkins目录的权限问题,否则就会出现无法访问的情况

 

Jenkins全局系统设置:

1、Jmeter+Ant+Jenkins可持续集成环境搭建记录

此处管理员邮件地址必填,涉及到后期启动发邮件功能

2、

Jmeter+Ant+Jenkins可持续集成环境搭建记录

3、Jmeter+Ant+Jenkins可持续集成环境搭建记录

这个好上面的按道理说应该只填一个就行,但是我没有验证。。。所以全都填了,然后在这里可以发测试邮件以此确认邮件系统是否正常

踩过的坑:

1、Jenkins自带的邮件系统按网上的描述,兼容性并不太好,比如我在部署期间,尝试将发送人邮件设置成QQ或者网易,都发送失败,具体原因并未查明,但是换成公司邮箱就正常了

 

Jenkins全局工具配置:

  1. JDK设置:

Jmeter+Ant+Jenkins可持续集成环境搭建记录

  1. ANT设置:

Jmeter+Ant+Jenkins可持续集成环境搭建记录

3、以上设置仅针对Linux,Windows只要吧环境变量配置好了,这里是不用设置的

 

通过Jenkins创建新的任务:

1、

Jmeter+Ant+Jenkins可持续集成环境搭建记录

2、构建触发器

Jmeter+Ant+Jenkins可持续集成环境搭建记录

定时构建的意思就是按照设定的时间或周期来自动构建,时间格式可以点后面的问号了解,大概意思如下:

第一个*表示分钟,取值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、构建环境

Jmeter+Ant+Jenkins可持续集成环境搭建记录

Jmeter+Ant+Jenkins可持续集成环境搭建记录

Linux环境这里需要选择之前我们添加的jdk和ant,Windows用默认的default就可以了

 

4、构建

Jmeter+Ant+Jenkins可持续集成环境搭建记录

AnT Version:Linux环境下选择ant,Windows选择default

Targets:应该也可以填,如果填的话应该对应的填写build.xml中<target    name="run">里面name对应的值

Build File:填写build.xml所在的位置

执行shell:这些填写要执行的shell脚本

 

构建后操作:

1.Publish HTML reports

Jmeter+Ant+Jenkins可持续集成环境搭建记录

意思就是通过html页面把测试报告展现出来

2.Editable Extended Email Publisher

Jmeter+Ant+Jenkins可持续集成环境搭建记录

这里重点就是选择触发通发邮件的条件,比如Failure –any 意思就是构建失败了发邮件,然后sent to就是选择收件人

 

手动构建,调试配置:

1、

Jmeter+Ant+Jenkins可持续集成环境搭建记录

点击这里就是立即构建

2、

Jmeter+Ant+Jenkins可持续集成环境搭建记录

构建结果会在构建历史中显示中,调试的时候我们在控制台输出里面分析和排查问题,直至调通

 

SHELL脚本说明:

  1. 使用脚本的目的:

因为Jenkins本身机制的原因,jmeter用例执行失败了并不代表任务构建失败,而我们的需求是希望用例执行失败就发邮件,基于此我们用shell脚本来实现我们的需求

  1. 脚本思路:

因为Jenkins只有在 构建失败的时候才会判断为失败而发邮件,那么我们可以在用例执行完毕之后,插入一个shell脚本先来检索一下测试报告中的结果是否有失败的标识,如果有失败的标识,我们则通过脚本将Jenkins的构建结果直接标记为失败,此时就能触发Jenkins的邮件条件,从而达到我们的目的

  1. 脚本注释:
#规定此脚本使用/bin/bash来解释执行

#!/bin/bash

#获取当前路径

path=$(pwd)

#将测试报告按时间排序,且取最新报告的文件名,此处” XXX”为文件名中关键字

jtlname=$(ls -lt ./report/jtl|grep XXX|head -n 1|awk '{print $9}')

#拼接成完整的路径值

filepath=$path/report/jtl/$jtlname

#打印一下,方便排查问题

echo $filepath

#在测试报告中判断是否有” <failure>true</failure>”,该字段为用例中断言的结果

grep -c "<failure>true</failure>" $filepath

#IF语句判断上一个结果的真假,为真则表示用例执行失败,exit 1 表示将Jenkins构建结果标识为失败,否则表示用例执行成功,exit 0 表示不干涉Jenkins

if [ $? = 0 ]

then

echo "Failed"

exit 1

else

echo "Success"

exit 0

fi

踩过的坑:

不要在Windows下写好脚本之后再上传到Linux服务器上,因为两个系统对文本格式的处理不一样,会出现各种莫名其妙的问题

 


以上就是所有内容!因是现学现用,所以不可避免存在理解不了正确的地方,还请大家纠正指出,感激不尽。另外本次因为项目的需要暂时没有用到git或svn代码更新编译的功能,如果以后基于此有新的内容,再来补充!

相关文章: