jenkins 构建 jmeter脚本,动态参数设置、Jenkins读取HTML报告(详细完整流程)

爷,独闯天下 提交于 2019-12-21 15:04:29

1.编写脚本(动态参数)

1.1 创建脚本

关于接口的具体信息无所谓,重点是线程数、循环次数,需要配置成动态参数的:${__P(threadNum,1)},${__P(cycles,1)} ,这样就相当于默认都是1,但是可接受参数,如下
在这里插入图片描述
解释:

赋值:-J 和 -G
	- 格式:-J变量名=值  -G变量名=值
	- 相同之处:设置jmeter属性,例如线程数、循环次数、ramp up-time等
 	- 不同之处:-J是设置本地jmeter属性;-G是设置server的jmeter属性(只有设置了远程机,开启了远程服务,才需要用到-G)
 	

1.2 linux中测试 .jmx脚本 (jmeter.sh 启动)

在/opt/apache-jmeter-4.0/bin 目录下执行命令:
jmeter -n -t /var/lib/jenkins/workspace/jmeter_script/script.jmx -JthreadNum=100 -Jcycles=10 -l /opt/apache-jmeter-4.0/bin/report/01.jtl -e -o /opt/apache-jmeter-4.0/bin/report/01_html

以上命令解释:运行 script.jmx 脚本 传入参数:-JthreadNum=100 -Jcycles=10,将报告生成到 ./report 目录,名字叫01.jtl ;然后根据01.jtl 生成01_html 的HTML格式的报告

如果没有问题,会生成对应的HTML文件,将HTML报告压缩后拉去下来直接打开就可以使用

具体解释参考:linux中安装和运行Jmeter(非GUI模式)

2.编写.sh脚本,方便Jenkins调用

网上很多人都用ant,我没弄明白ant有什么用,而且也感觉比较麻烦,所以直接使用.sh 脚本,这样既可以满足需求,扩展性也比较好

2.1. 在 /usr/local/script 目录下创建脚本: run_jmeter.sh

# 定义一个函数
run_temp_server(){
    script_path=$1 # 脚本的绝对路径 /var/lib/jenkins/workspace/jmeter_script/script.jmx
    report_path=$2 # 报告的绝对路径(不包含报告名称) /opt/apache-jmeter-4.0/bin/report
	BUILD_ID=$3 # 版本号,用作报告名
	threadNum=$4 # 线程数
	cycles=$5 # 循环次数

	
    # 检查绝对路径是否存在
    if [ ! -e $script_path ]
    then
	# 项目不存在则输出以下信息
        echo "----------no such file: $script_path"
    
    else
		# 存在则执行下面命令
		echo "----------脚本的绝对路径 :$script_path"
		
		echo "----------报告文件名 : $BUILD_ID" 
		report_name_jtl="${report_path}/${BUILD_ID}.jtl" # jtl 报告路径
		report_name_html="$report_path/${BUILD_ID}_html" # HTML 报告路径
		report_name_zip="${report_path}/${BUILD_ID}.zip" # zip 报告路径
		echo "----------jtl 报告路径 :$report_name_jtl"
		echo "----------HTML 报告路径 :$report_name_html"
		echo "----------zip 报告路径 :$report_name_zip"
		echo "----------线程数 :$threadNum"
		echo "----------循环次数 :$cycles"
		
		# 到jmeter
        cd /opt/apache-jmeter-4.0/bin/
		# 1.执行脚本,生成.jtl 的报告,测试完毕后再通过jtl报告生成html报告
		sh jmeter.sh -n -t $script_path -JthreadNum=$threadNum -Jcycles=$cycles -l $report_name_jtl -e -o $report_name_html
#		# 2.删除.jtl 报告
		rm -rf $report_name_jtl
#		# 3.将HTML报告压缩(方便下载)
#		zip -r $report_name_zip $report_name_html

		# 判断当前构建的前五次的报告是否还存在,存在则删除
		history_BUILD_ID=$[BUILD_ID-5]
		if [ ! -d "$report_path/${history_BUILD_ID}_html" ];then
		echo "----------历史报告数量不大于5份"
		else
		echo "----------删除历史报告:$report_path/${history_BUILD_ID}_html"
		rm -rf "$report_path/${history_BUILD_ID}_html"
		fi
		echo "----------运行结束"

		

    fi
}


# 执行函数 并且传入参数
run_temp_server  $1 $2 $3 $4 $5

2.2.2 linux中测试 .jmx脚本 (run_jmeter.sh 启动)

运行命令:

sh /usr/local/script/run_jmeter.sh /var/lib/jenkins/workspace/jmeter_script/script.jmx  /opt/apache-jmeter-4.0/bin/report  1 100  2

解释:运行 /usr/local/script目录下的run_jmeter.sh ,传入参数:

  • jmeter脚本绝对路径>/var/lib/jenkins/workspace/jmeter_script/script.jmx
  • report 绝对路径>/opt/apache-jmeter-4.0/bin/report
  • 报告名称> 1
  • 线程数> 100
  • 循环次数 > 2

以上命令运行完成后应该会在/opt/apache-jmeter-4.0/bin/report 目录下生成 1_html 的文件,下载下来就是测试报告,如果没有问题。就可以开始在Jenkins中配置了

3. Jenkins添加任务,动态构建

3.1 创建GitHub项目 存放jmeter脚本

- 这里就不做描述了 , 直接贴个图吧

在这里插入图片描述

3.2 Jenkins新增任务(文章底部有完整截图)

3.2.1 将代码拉取到对应服务器

  • 描述:jmeter 压测脚本(随便写写)
  • 丢弃旧的构建 :这个随自己
  • 源码管理:Git 这里需要确保一下Jenkins安装了Git插件,服务器也安装了Git,否则可能会报错(已经配置好了的就不用管了)

到这里就可以尝试Build 了,确认jmeter脚本是否拉去到服务器,我的路径是:
Building in workspace /var/lib/jenkins/workspace/jmeter_scrip

以上步骤没有问题的话我们开始用shell运行脚本,并验证是否能生成报告

3.2.2 选择shell构建任务

  • 先配置两个参数:threadNum,cycles 备注自己随意,下面shell会用到
  • 执行shell:sh /usr/local/script/run_jmeter.sh /var/lib/jenkins/workspace/jmeter_script/script.jmx /opt/apache-jmeter-4.0/bin/report $BUILD_ID $threadNum $cycles
  • 安装Groovy 插件;并增加 Execute system Groovy script 输入:System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")
  • 安装Publish HTML reports 插件,并配置报告信息
    • 报告路径: /opt/apache-jmeter-4.0/bin/report/
    • 报告的首页:*/index.html
    • 报告title:Jmeter HTML Report
      在这里插入图片描述

全部配置图片太长这里不方便 ,转换成在线链接了参考:Jenkins构建配置

4. 最终成果

  • jmeter脚本修改后上传到GitHub
  • Jenkins 每次构建的时候只需要传入线程数、循环次数,会获取GitHub最新jmeter脚本
  • 运行完成后会根据构建的版本号生成对应的报告
  • 报告可保留最新的N份,在shell中控制

在这里插入图片描述
构建展示


在这里插入图片描述

在这里插入图片描述
报告展示


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!