Skip to content
石头软件测试技术分享石头软件测试技术分享
主页
github icon
  • cicd

    • 传统项目部署

      • 持续集成/持续发布
        • jenkins简介
          • jenkins项目部署
          • 容器化部署

            • jenkins打包dokcer镜像
              • jenkins升级rancher服务
              • 工具集成

                • jenkins集成jmeter
                  • 参考文档
                    • jenkins使用插件
                      • jmeter配置
                        • jenkins配置
                          • 参数化配置
                            • 设置jmeter启动命令
                              • 解决报告样式无法展示问题
                                • 增加报告展示
                                  • 增加钉钉提醒
                                • jenkins集成allure
                                  • jenkins分发资源
                                    • 钉钉消息发送

                                  jenkins集成jmeter

                                  author icon石头calendar icon2022年2月20日category icon
                                  • 持续集成/持续发布
                                  tag icon
                                  • jenkins
                                  • jmeter
                                  timer icon大约 2 分钟

                                  此页内容
                                  • 参考文档
                                  • jenkins使用插件
                                  • jmeter配置
                                  • jenkins配置
                                    • 参数化配置
                                    • 设置jmeter启动命令
                                    • 解决报告样式无法展示问题
                                    • 增加报告展示
                                    • 增加钉钉提醒

                                  # jenkins集成jmeter

                                  # 参考文档

                                  https://www.cnblogs.com/jxial/p/15169803.htmlopen in new windowhttps://blog.csdn.net/qq_35520506/article/details/108726816open in new windowhttps://blog.csdn.net/kmlyc/article/details/80686213open in new window

                                  # jenkins使用插件

                                  Publish HTML reports html报告
                                  groove 执行groove脚本
                                  post build tasks 构建后条件判断执行

                                  # jmeter配置

                                  线程数和持续时间参数化配置
                                  使用jmeter自带的P函数来获取命令行中的参数
                                  ${__P(变量名,)}
                                  img.png

                                  jmeter -Jthread=线程数 -Jtime=持续时间 -n -t jmeter脚本位置 -l 结果脚本位置 -e -o html报告路径
                                  
                                  1

                                  # jenkins配置

                                  # 参数化配置

                                  勾选This project is parameterized
                                  设置线程数和持续时间参数化
                                  img_2.pngimg_3.png 效果如下
                                  img_1.png

                                  # 设置jmeter启动命令

                                  jmeter -Jthread=$thread -Jtime=$time -n -t jmeter脚本 -l jmeter结果脚本 -e -o html报告路径
                                  
                                  1

                                  # 解决报告样式无法展示问题

                                  添加Groovy Script构建

                                  System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")
                                  
                                  1

                                  img_4.png

                                  # 增加报告展示

                                  # 添加构建后操作

                                  Publish HTML reports

                                  # 填入报告生成路径

                                  HTML directory to archive 填入命令报告生成的路径

                                  # 填入报告html名称

                                  Index page[s] 填入 index.html

                                  # 高级选项

                                  Keep past HTML reports 保留过去的HTML报告
                                  Always link to last build 始终链接到上次构建
                                  img_5.png

                                  # 增加钉钉提醒

                                  # 添加构建后操作

                                  build task
                                  可以设置日志内有某个或者多个关键词满足时才触发该构建
                                  这里勾选Run script only if all previous steps were successful(仅当所有先前的步骤都成功时才运行脚本)

                                  # 获取构建信息

                                  import jenkins
                                  
                                  jenkins_url = "jenkins地址"
                                  # 登录jenkins
                                  server = jenkins.Jenkins(jenkins_url, username='账号', password='密码')
                                  # 获取最新构建的构建编号
                                  job_last_number = server.get_info("job/构建任务名称")['lastBuild']['number']
                                  # 获取构建新信息
                                  build_info = server.get_build_info("构建任务名称", job_last_number)
                                  build_info_actions = build_info['actions'][0]['parameters']
                                  # 取线程数量和持续时间
                                  thread_number = build_info_actions[0]['value']
                                  duration = build_info_actions[1]['value']
                                  #拼接jmeter报告地址
                                  report_url = f"http://jenkins地址/job/构建任务名称/{str(job_last_number)}/Jmeter_20HTML_20Report/"
                                  data = {
                                       "msgtype": "markdown",
                                       "markdown": {
                                           "title": "jmeter接口测试",
                                           ""
                                           "text": """### **jmeter接口测试**\n\n""" +
                                            f"""jmeter脚本执行结果: {build_info['result']}\n\n""" +
                                            f"""执行线程数量: {thread_number}\n\n""" +
                                            f"""执行时间(s): {duration}\n\n""" +
                                            f"""[构建地址](构建任务地址)   [报告地址]({report_url})\n\n""" +
                                            "账号:xxx 密码:xxx \n\n" +
                                            f"""jenkins只读账号仅供查看测试报告"""
                                       },
                                  }
                                  
                                  
                                  1
                                  2
                                  3
                                  4
                                  5
                                  6
                                  7
                                  8
                                  9
                                  10
                                  11
                                  12
                                  13
                                  14
                                  15
                                  16
                                  17
                                  18
                                  19
                                  20
                                  21
                                  22
                                  23
                                  24
                                  25
                                  26
                                  27
                                  28
                                  29
                                  30

                                  # 钉钉发送消息到群

                                  import time
                                  import hmac
                                  import hashlib
                                  import base64
                                  import urllib.parse
                                  import requests
                                  
                                  timestamp = str(round(time.time() * 1000))
                                  secret = 'this is secret'
                                  secret_enc = secret.encode('utf-8')
                                  string_to_sign = f'{timestamp}\n{secret}'
                                  string_to_sign_enc = string_to_sign.encode('utf-8')
                                  hmac_code = hmac.new(
                                      secret_enc,
                                      string_to_sign_enc,
                                      digestmod=hashlib.sha256).digest()
                                  sign = urllib.parse.quote_plus(base64.b64encode(hmac_code))
                                  token = 'xxx'
                                  url = f'https://oapi.dingtalk.com/robot/send?access_token={token}&timestamp={timestamp}&sign={sign}'
                                  headers = {
                                      "Content-Type": "application/json"
                                  }
                                  res = requests.post(url=url, headers=headers, json=data)
                                  print(res.text)
                                  
                                  1
                                  2
                                  3
                                  4
                                  5
                                  6
                                  7
                                  8
                                  9
                                  10
                                  11
                                  12
                                  13
                                  14
                                  15
                                  16
                                  17
                                  18
                                  19
                                  20
                                  21
                                  22
                                  23
                                  24

                                  img_6.png

                                  # 实际效果

                                  img_14.png

                                  下一页
                                  jenkins集成allure
                                  Copyright © 2021-present Evan You 石头 | 备案号 : 蜀ICP备2021021200号-2 | 友情链接 : APP开发者工具