如何在centos上集成jmeter与CI/CD
导读:在 CentOS 上将 JMeter 集成到 CI/CD 的落地方案 一 架构与准备 组件选型 版本控制与触发:GitLab/GitHub(Webhook 触发流水线)。 CI/CD 引擎:Jenkins(自建)或 GitLab CI...
在 CentOS 上将 JMeter 集成到 CI/CD 的落地方案
一 架构与准备
- 组件选型
- 版本控制与触发:GitLab/GitHub(Webhook 触发流水线)。
- CI/CD 引擎:Jenkins(自建)或 GitLab CI/GitHub Actions(托管)。
- 执行环境:CentOS 7/8 代理节点(可容器化),预装 Java 8/11、JMeter 5.x。
- 安装 JMeter(示例)
- 安装 OpenJDK 8:sudo yum install -y java-1.8.0-openjdk-devel
- 下载并解压 JMeter(以 5.4.3 为例):
- wget https://dlcdn.apache.org//jmeter/binaries/apache-jmeter-5.4.3.tgz
- tar -xzf apache-jmeter-5.4.3.tgz -C /opt/
- ln -sfn /opt/apache-jmeter-5.4.3 /opt/jmeter
- 配置环境变量(/etc/profile 或 ~/.bashrc):
- export JMETER_HOME=/opt/jmeter
- export PATH=$PATH:$JMETER_HOME/bin
- 验证:jmeter -v
- 建议目录结构
- /opt/jmeter-tests/:存放 .jmx 脚本、数据文件、报告目录
- /var/lib/jenkins/workspace/…:Jenkins 工作空间(自动拉取代码)
- 代理与权限
- 为 Jenkins 代理或运行用户授予对 /opt/jmeter 与 /opt/jmeter-tests 的读写权限
- 如需远程分布式压测,开放 RMI 1099 端口并配置 server.rmi.localport、remote_hosts 等参数
二 执行引擎选择与示例
- 方式 A:命令行直跑(最简洁,适合任何 CI)
- 典型命令
- jmeter -n -t /opt/jmeter-tests/perf/login.jmx -l /opt/jmeter-tests/results/result.jtl -e -o /opt/jmeter-tests/results/html-report
- 说明
- -n 非 GUI;-t 指定脚本;-l 输出 JTL;-e 生成 HTML 报告;-o 指定报告目录(需为空)
- 可在 CI 中保存 JTL/HTML 为构件,便于归档与对比
- 典型命令
- 方式 B:Ant 批量执行(传统方案,便于生成 HTML 报告)
- 安装 Ant:sudo yum install -y ant
- 将 JMeter extras 中的 ant-jmeter-1.1.1.jar 复制到 $ANT_HOME/lib
- 在 JMeter 的 extras 目录可找到 build.xml 示例,按需修改 jmeter.home、test.jmx、result.jtl、result.html 路径
- 运行:cd /ant & & ant
- 报告样式可通过替换 jmeter-results-detail-report_21.xsl 或自定义 XSL 实现
- 方式 C:Maven 插件执行(适合 Java 项目一体化)
- 在 pom.xml 中引入 jmeter-maven-plugin,配置 、、 等
- 运行:mvn verify(或 mvn jmeter:gui 本地调试)
- 报告默认生成在 target/jmeter/,可结合 maven-resources-plugin 拷贝归档
- 方式 D:容器化执行(环境一致性最佳)
- 示例(在 CI 中使用官方镜像运行 JMeter,挂载脚本与结果目录):
- docker run --rm -v /opt/jmeter-tests:/tests justb4/jmeter:5.4.3 -n -t /tests/login.jmx -l /tests/results.jtl -e -o /tests/report
- 示例(在 CI 中使用官方镜像运行 JMeter,挂载脚本与结果目录):
三 在 CI/CD 平台中的落地示例
- Jenkins 流水线(声明式)
- 关键步骤
- 拉取代码(Git)
- 安装 Java 与 JMeter(或使用已预装代理)
- 执行 JMeter(命令行或 Ant/Maven)
- 归档 JTL/HTML 报告,发布到 HTML Publisher 或 Performance Plugin
- 阈值门禁(如 95th 响应时间 < 2s、错误率 < 1%)
- 示例 Jenkinsfile(片段)
- pipeline { agent { label ‘centos-jmeter’ } tools { jdk ‘openjdk8’ } stages { stage(‘Checkout’) { steps { git url: ‘git@gitlab.com:xxx/perf-tests.git’, branch: ‘main’ } } stage(‘Run JMeter’) { steps { sh ‘’’ mkdir -p results /opt/jmeter/bin/jmeter -n -t tests/login.jmx -l results/result.jtl -e -o results/html-report ‘’’ } } stage(‘Archive & Report’) { steps { archiveArtifacts artifacts: ‘results/**’, fingerprint: true publishHTML(target: [reportDir: ‘results/html-report’, reportFiles: ‘index.html’, reportName: ‘JMeter Report’]) } } stage(‘Threshold Gate’) { steps { script { def summary = readFile ‘results/html-report/summary.json’ // 需配合 JMeter 插件导出 // 解析并判断阈值,失败则 currentBuild.result = ‘FAILURE’ } } } } }
- 插件建议:Git、HTML Publisher、Performance Plugin、Warnings NG
- 关键步骤
- GitLab CI 示例(.gitlab-ci.yml)
- 示例
- stages: [test] jmeter: image: justb4/jmeter:5.4.3 stage: test script: - mkdir -p results - jmeter -n -t tests/login.jmx -l results/result.jtl -e -o results/html-report artifacts: paths: [results/] when: always only: - main
- 示例
- GitHub Actions 示例(.github/workflows/perf.yml)
- 示例
- name: JMeter Performance Test on: [push] jobs: perf: runs-on: ubuntu-latest container: justb4/jmeter:5.4.3 steps: - uses: actions/checkout@v4 - name: Run JMeter run: | mkdir -p results jmeter -n -t tests/login.jmx -l results/result.jtl -e -o results/html-report - name: Upload Report uses: actions/upload-artifact@v4 with: path: results/
- 示例
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何在centos上集成jmeter与CI/CD
本文地址: https://pptw.com/jishu/763501.html
