You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GitLab CI/CD中结合JMX与CSV文件运行JMeter测试

GitLab CI/CD配置JMeter性能测试的问题修正

问题背景

需要搭建GitLab CI/CD流水线,通过JMeter的GIS_2CSV_sample_sya.jmx测试计划和Config_Setup_LotInfo_sample.csv数据源文件运行性能测试,并生成测试报告。当前的.gitlab-ci.yml配置存在文件关联错误、路径配置不当等问题,导致测试无法正常关联CSV文件执行。

当前配置的问题分析

  • 未处理CSV数据源文件:配置仅复制了JMX文件到JMeter目录,但未将Config_Setup_LotInfo_sample.csv同步到JMeter可访问的路径,导致JMX测试计划无法读取数据源。
  • 变量未实际复用:定义了JMX_FILE、CSV_FILE_PATH等变量,但脚本中硬编码文件路径,既浪费变量定义的意义,也降低了配置的可维护性。
  • 报告输出路径权限风险:直接将报告输出到根目录/GIS_2CSV_sample_sya,容器环境下通常没有根目录写入权限,会导致报告生成失败。
  • 未定义BUILD_PATH变量:before_script中使用了$BUILD_PATH但未在variables中声明,执行时会抛出变量未定义错误。
  • 报告阶段无实际动作:report_job仅依赖jmeter-build阶段,但未配置报告上传或处理逻辑,无法留存测试报告。

修正后的.gitlab-ci.yml配置

stages:
  - jmeter
  - report

variables:
  # Compression and general settings
  FF_USE_FASTZIP: "true"
  ARTIFACT_COMPRESSION_LEVEL: "fastest"
  CACHE_COMPRESSION_LEVEL: "fastest"

  # Project and environment settings
  ENV: "prd"
  PROJECT: "nvis"
  TARGET: "jmeter"

  # JMeter test files & paths
  JMX_FILE: "GIS_2CSV_sample_sya.jmx"
  CSV_FILE: "Config_Setup_LotInfo_sample.csv"
  JMETER_HOME: "/opt/apache-jmeter-5.6.3"
  BUILD_PATH: "/builds/example/devops/jmeter/report"
  TEST_RESULT_CSV: "${JMETER_HOME}/test_result.csv"
  REPORT_OUTPUT_DIR: "${BUILD_PATH}/jmeter_report"

jmeter-build:
  stage: jmeter
  image: registry.example.com/jmeter_base:1.0.3
  before_script:
    # 创建报告存放目录
    - mkdir -p "${BUILD_PATH}"
    # 复制JMX和CSV文件到JMeter可访问目录
    - cp "JMeter-sample/${JMX_FILE}" "${JMETER_HOME}/"
    - cp "JMeter-sample/${CSV_FILE}" "${JMETER_HOME}/"
  script:
    # 执行JMeter测试,生成结果文件和HTML报告
    - jmeter -Jjmeter.save.saveservice.timestamp_format="yyyy/MM/dd HH:mm:ss" 
             -n -t "${JMETER_HOME}/${JMX_FILE}" 
             -l "${TEST_RESULT_CSV}" 
             -e -o "${REPORT_OUTPUT_DIR}"
  artifacts:
    paths:
      - "${BUILD_PATH}/"
    expire_in: 7d

report_job:
  stage: report
  image: alpine:3.8
  dependencies:
    - jmeter-build
  script:
    # 可选:校验报告文件是否生成
    - ls -la "${BUILD_PATH}/"
  artifacts:
    paths:
      - "${BUILD_PATH}/"
    expire_in: 30d

关键配置说明

  1. CSV文件关联:确保JMX测试计划中配置的CSV数据源路径与${JMETER_HOME}/${CSV_FILE}一致,比如直接写Config_Setup_LotInfo_sample.csv(已复制到JMeter主目录),或使用绝对路径${JMETER_HOME}/Config_Setup_LotInfo_sample.csv。
  2. 路径统一管理:通过JMETER_HOME、BUILD_PATH等变量统一管理路径,避免硬编码,方便后续版本或路径调整。
  3. 制品留存:通过artifacts配置将测试结果和HTML报告上传为GitLab制品,可在流水线页面下载查看,expire_in参数控制文件自动过期时间。
  4. 权限规避:将报告输出到GitLab默认构建目录/builds/...,避免根目录权限限制,确保报告能正常生成。

内容的提问来源于stack exchange,提问作者Nurul Syahirah Azmi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 17:22:05