jmeter+ant+jenkins性能自动化环境搭建

jmeter+ant+jenkins性能自动化环境搭建


一、jmeter

jmeter写的脚本放入容器中当作控制机
执行机可以任意操作系统
配置助攻机器
1、在jmeter.properties中修改
#server_port=1099
server_port=1098 自定义端口
#server.rmi.port=1234
server.rmi.port=1098 修改与server_port相同的端口,意思为:是否开启认证。
#server.rmi.ssl.disable=false
server.rmi.ssl.disable=true 不开启加密认证
2、启动服务
控制机配置
修改jmeter.properties
remote_hosts=填写助攻机器ip
server.rmi.ssl.disable=true

二、jenkins

Jenkins是一个开源的、可扩展的持续集成、交付、部署(软件/代码的编译、打包、部署)的基于web界面的平台。允许持续集成和持续交付项目,无论用的是什么平台,可以处理任何类型的构建或持续集成。

1.安装

三、jenkins的安装
1、下载war包,放到tomcat上
2、docker部署,进行目录挂载,我用的是docker部署的

2.jenkins配置

1、jenkins登录后安装插件,有测试报告插件,创建项目(百度) 2、设置全局变量:jdk路径,ant ![在这里插入图片描述](https://img-blog.csdnimg.cn/4519fe0f73674660804c60ab99188fc2.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5aeR5aiY5Yir56eD5aS0,size_20,color_FFFFFF,t_70,g_se,x_16) ![在这里插入图片描述](https://img-blog.csdnimg.cn/e1716c1ce8f542c3ae5a0c307e1dc8fd.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5aeR5aiY5Yir56eD5aS0,size_20,color_FFFFFF,t_70,g_se,x_16)

3、 邮箱配置,在build.xml中进行配置


3.ant配置

ant是代码编译执行
1、下载ant,并解压
2、上传到jenkins的容器里面
3、配置环境变量:mv apache-ant-xxx /usr/local
在/usr/local中建立软连接 ln -s apache-ant-xxx ant,打开etc/profile文件设置环境变量。
在这里插入图片描述
在这里插入图片描述
Source /etc/profile
输入ant -version出现报错:Permission denied
在这里插入图片描述
解决:赋予权限
5、将jmeter下的extras里面的ant-jmeter.jar报放到ant的lib目录下 发邮件
cp ant-jmeter-1.1.1.jar /usr/local/ant/lib/
6、设置build.xml文件
project项目只有一个
Default=all 默认情况下,会执行任务名为all的任务,all的任务包含了test,report,mail.默认情况下会执行入围,生成报告,发邮件的任务。
可以在jenkins中的target设置执行的任务
设置build.xml

<?xml version="1.0" encoding="UTF-8"?>
<project name="kyj-cicd" default="all" basedir=".">  
 <tstamp>
        <format property="time" pattern="yyyyMMddhhmm" />
    </tstamp>
    <property name="encoding" value="UTF-8" />
    <!-- 需要改成自己本地的 Jmeter 目录--> 
    <property name="jmeter.home" value="xxx/apache-jmeter-5.1.1" />
    <property name="report.title" value="接口性能监控"/>
    <!-- jmeter生成jtl格式的结果报告的路径-->
    <property name="jmeter.result.jtl.dir" value="${jmeter.home}/work/resultLog/jtl" />
    <!-- jmeter生成html格式的结果报告的路径-->
    <property name="jmeter.result.html.dir" value="${jmeter.home}/work/resultLog/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="all">
        <antcall target="test" />
        <antcall target="report" />
        <antcall target="mail" />
    </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}/bin/lemon" 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="showData" expression="${show-data}"/>
 
              <param name="dateReport" expression="${report.datestamp}"/>
              <param name="titleReport" expression="${report.title}:${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>
    <property name="mail_from" value="xxx@qq.com" />
    <property name="password" value="xxx" />
    <!--mail_to:发送列表,多个之间逗号间隔 -->
     
    <property name="mail_to" value="xxx@qq.com" /> 
    <property name="mailport" value="587" />
    <!--邮箱需要开通smtp服务-->
    <property name="mailhost" value="smtp.qq.com" />
 
    <target name="mail">
         
        <loadfile property="report" srcFile="${jmeter.result.htmlName}" encoding="${encoding}" />
        <mail from="${mail_from}" tolist="${mail_to}" mailport="${mailport}" mailhost="${mailhost}" user="${mail_from}" password="${password}" subject="TestReport-${ant.project.name}" messagemimetype="text/html">
            <message>
                            本轮构建的结果如下:
                            ${report}                           
                   </message>
        </mail>
    <delete file="${jmeter.result.htmlName}" />
    </target>
</project>

4.立即构建

点击立即构建
1、生成报告失败
在这里插入图片描述

解决:需要设置权限给输出的文件
2、解决问题1后出现 发送邮件失败的问题
在这里插入图片描述
3、解决
解决方案
下载commons-email.jar包:
https://commons.apache.org/proper/commons-email/download_email.cgi
下载activation-1.1.1.jar包:
http://www.java2s.com/Code/Jar/a/Downloadactivation221jar.htm
下载javax.mail.jar包:
https://github.com/javaee/javamail/releases
将三个 jar 包都放在 ant 的 \lib 目录下,再次运行即可,运行成功
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

姑娘别秃头

你的鼓励是为我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值