1、首先准备执行参数

threadsnum---当前并发数(如果是多台slave机运行,最终并发数需要乘以台数)
duration---脚本执行持续时间,单位为秒
jmxname--jmx脚本存放路径
slave1Server---slave1的ip
slave2Server---slave2的ip
MasterServer--master的ip

二、脚本如下

pipeline {agent {label 'slave1'}environment{#定义脚本文件名称def ori_jmx_num_filename="/home/apache-jmeter-4.0/jmeterTest/thread_${threadsnum}_${duration}_${jmxname}"def jmx_num_filename="/home/apache-jmeter-4.0/jmeterTest/thread_${threadsnum}_${duration}_${jmxname}.jmx"#定义报告def jtl_filename="/home/apache-jmeter-4.0/jmeterTest/jtl_${threadsnum}_${duration}_${jmxname}.jtl"def web_filename="/home/apache-jmeter-4.0/jmeterResult/web_${threadsnum}_${duration}_${jmxname}"def jmx_filepath="/home/apache-jmeter-4.0/jmeterTest/${jmxname}.jmx"}stages {stage('kill jmeter') {agent {label "${MasterServer}"}steps{sh "if (ps -ef| grep java|grep ${jmxname})then (ps -ef| grep java|grep ${jmxname}| awk '{print \$2}'|xargs sudo kill -9) fi"sleep(2)}}#启动slave上的jmeter-serverstage('start slave1') {agent {label "${slave1Server}"}steps{sh "if (ps -ef| grep java|grep jmeter|grep jdk)then (ps -ef| grep java|grep jmeter|grep jdk| awk '{print \$2}'|xargs sudo kill -9) fi"sleep(3)sh 'nohup /home/apache-jmeter-4.0/bin/jmeter-server &'sleep(5)}}stage('start slave2') {agent {label "${slave2Server}"}steps{sh "if (ps -ef| grep java|grep jmeter|grep jdk)then (ps -ef| grep java|grep jmeter|grep jdk| awk '{print \$2}'|xargs sudo kill -9) fi"sleep(3)sh 'nohup /home/apache-jmeter-4.0/bin/jmeter-server &'sleep(5)}}stage('prepare script') {agent {label "${MasterServer}"}steps{echo "jmeter脚本准备开始……"sh 'sudo rm -rf ${jmx_num_filename} ${jtl_filename} ${web_filename}'//生成jmx带并发数的脚本sh 'export jmx_num_filename=${jmx_num_filename}'//生成一个jtl文件,用来存储执行完脚本数据sh 'export jtl_filename=${jtl_filename}'//新建一个文件夹存储生成的报告sh 'export web_filename=${web_filename}'//复制模版脚本到当前sh 'sudo cp -f ${jmx_filepath} ${jmx_num_filename}'//sed用来动态修改文件的内容,sed -i "" "s/thread_num/${num}/g" ${jmx_num_filename},-i强制修改,thread_num,需要被修改的字符串,${num}需要替换的并发数sh 'sudo sed -i "s/num_threads\">.*</num_threads\">${threadsnum}</g" ${jmx_num_filename}'sh 'sudo sed -i "s/ramp_time\">.*</ramp_time\">${ramptime}</g" ${jmx_num_filename}'sh 'sudo sed -i "s/duration\">.*</duration\">${duration}</g" ${jmx_num_filename}'echo "jmeter脚本准备结束……"}}stage('execute script'){agent {label "${MasterServer}"}steps{echo "jmeter脚本执行开始……"echo "当前执行的脚本是:${jmx_num_filename}"//执行静默压测命令,jmeter执行路径执行命令sh '/home/apache-jmeter-4.0/bin/jmeter -n -t ${jmx_num_filename} -r -l ${jtl_filename} ${remotes} -e -o ${web_filename}'sh 'sudo cp -r ${web_filename} ${WORKSPACE}'echo "jmeter脚本执行结束……"}}#生成测试报告     stage('publish report'){agent {label "${MasterServer}"}steps{                publishHTML (target: [allowMissing: false,alwaysLinkToLastBuild: false,keepAll: true,reportDir: 'web_${threadsnum}_${duration}_${jmxname}',reportFiles: 'index.html',reportName: "Summary Report"])}}}
}

【jenkins+jmeter+pipeline】使用pipeline方式,分布式执行jmeter脚本,并生成报告相关推荐

  1. jmeter安装包_分布式执行jmeter脚本步骤(非GUI)

    备注:[Linux查看服务器是32位还是64位命令] uname -m getconf LONG_BIT 1.Linux环境安装jmeter 可参考https://www.cnblogs.com/su ...

  2. jmeter 能调用python吗_jmeter 执行python脚本的方法 。(亲测ok)

    jmeter 可以通过Jython 执:行python代码 2.把下载的Jython 的jar包放到 jmeter的lib文件夹.重启jmeter 3.线程组中添加 JSR223 Sampler 4. ...

  3. 通过ANT实现jmeter批量执行脚本、生成报告、发送邮件全套build.xml文件

    在开始通过ANT运行build.xml之前,有一步必须要做,那就是将JMeter所在目录下extras子目录里的ant-JMeter-1.1.1.jar复制到Ant所在目录lib子目录之下,这样Ant ...

  4. Mac创建Jmeter桌面快捷启动方式

    一 验证终端命令启动Jmeter 1 找到Jmeter可执行文件路径 ~/apache-jmeter-5.4.1/bin/jmeter 打开[终端]命令行工具,输入以下命令即可启动Jmeter sh ...

  5. Jmeter,Linux下执行./jmeter报错【./jmeter:Permission denied】

    一.问题描述:         在压测时,执行./jmeter -n -t 报错,提示: ./jmeter: Permission denied[拒绝访问] 二.问题分析:         由于jme ...

  6. jmeter执行脚本并生成测试报告时报错:Results file:result.jtl is not empty

    jmeter:5.1.1 操作系统:Win10 重现步骤:今天想通过命令执行jmeter的脚本并生成HTML测试报告,第一次执行没有问题,第二次执行的时候报错:Results file:result. ...

  7. python脚本调度程序_Windows 任务调度程序定时执行Python脚本

    Windows 任务调度程序(Task Scheduler)可以定时执行程序,本文分享使用Task Scheduler定时执行Python脚本的两种方法. 在控制面版->管理员工具中打开 Tas ...

  8. VS2017 C++工程 执行python脚本

    我解决了哪怕很小的一个问题,我也想记录下来来见证我的经历. 背景: 一.使用libhuru库生成pdf报告 最近参与一些测试工作,希望测试结束后能够根据测试得到的数据和图像自动生成测试报告,最开始调研 ...

  9. Jenkins的流水线(Pipeline)

    目录 Jenkins安装部署使用_南宫乘风的博客-CSDN博客 Jenkins入门配置_南宫乘风的博客-CSDN博客 Jenkins集成Sonar Qube_南宫乘风的博客-CSDN博客 Jenkin ...

最新文章

  1. JS 实现MVC的写法
  2. [置顶] Android代码----android获取3G或wifi流量信息
  3. 服务器主板点不亮排查
  4. 浪潮云海OS C位出道,融合开放基础设施呼之欲出
  5. php中余数为0,PHP中余数、取余的妙用
  6. java中关于x轴翻转和y轴翻转如何计算_如何用加速度计提高倾角测量精度?
  7. 全自动mysql数据监控平台_Prometheus+Grafana打造Mysql监控平台
  8. android lottie大小,android-Lottie动画填充
  9. 基于物联网的智能门锁应用系统架构设计及项目开发实践总结
  10. Excel如何将两列内容合并到一列并在中间添加符号
  11. 数据分析项目实战——链家深圳二手房房源数据分析
  12. 需求通信相关技术人才
  13. Echarts漂亮水滴图
  14. SWD模式下无法识别到芯片
  15. 洪蜀宁-区块链原始大佬的文章-金丘区块链院长
  16. 空调噪音测试软件,空调噪音如何测试 空调噪音测试方法【详细介绍】
  17. 白帽子讲web安全笔记——XSS(二)
  18. php租车小程序源码[附小程序图文详解]
  19. 第九章 射频放大器
  20. 原材料不良为什么不是PFMEA的失效原因?

热门文章

  1. Oracle中to_Char详解,Oracle to_char 函数详解
  2. 了解自己 做好自己
  3. 4.19 python 网络编程和操作系统部分(TCP/UDP/操作系统概念/进程/线程/协程) 学习笔记
  4. CSS:链接外部css样式时候link标签使用方法
  5. 如用css让ul横向排列,css怎么让ul实现横向排列不换行的效果
  6. Android通过网络URL获取图片并显示
  7. Millionaire(2008 APAC local onsites c) 概率dp
  8. 虚幻引擎(UE4) 日志、打印运行时信息
  9. win11使用优化-这后,就可以放弃win10了
  10. c语言中求二次函数的根,二次函数求根公式法