GitLab CI运行JMeter负载测试脚本提示No such file or directory如何解决
报错原因分析
- Runner运行环境不匹配:你配置中使用的是Windows风格的盘符路径
c:\apache-jmeter-5.4.1\bin,如果GitLab CI Runner实际运行在Linux或macOS环境下,不存在C盘盘符,也不识别反斜杠作为路径分隔符,自然会找不到目标目录。 - 目标路径不存在:GitLab CI任务默认运行在干净的执行环境中,如果你没有提前在Runner节点安装JMeter到指定路径,也没有在CI脚本中提前下载部署JMeter,对应路径本身就不存在。
- 路径拼写或大小写错误:Linux环境下路径对大小写敏感,比如实际路径为
Apache-Jmeter-5.4.1时,写小写的apache-jmeter-5.4.1就会触发报错;如果路径存在拼写错误也会导致相同问题。 - 工作目录不匹配:如果你把JMeter或者测试脚本放在项目仓库内,CI任务的默认工作目录是仓库根目录,直接写绝对路径会找不到仓库内的相关文件。
排查修复方案
- 确认Runner操作系统类型
在CI脚本最前面添加系统信息打印命令,确认执行环境:
Linux/macOS环境添加
uname -a,Windows环境添加systeminfo | findstr /B /C:"OS Name"
根据环境调整路径格式:Linux/macOS使用斜杠/作为路径分隔符,无盘符;Windows可使用反斜杠\或斜杠作为分隔符。
- 确认目标路径是否存在
在cd步骤前添加目录打印命令,排查路径是否存在:
- Linux/macOS环境添加
ls /查看根目录结构 - Windows环境添加
dir c:\查看C盘目录结构
如果确认没有JMeter目录,两种方案处理:- 提前在Runner节点安装JMeter到固定路径,CI脚本直接调用该路径
- 在CI脚本中先下载部署JMeter再执行测试,Linux环境示例脚本:
script: - wget https://archive.apache.org/dist/jmeter/binaries/apache-jmeter-5.4.1.tgz - tar -xzf apache-jmeter-5.4.1.tgz - cd apache-jmeter-5.4.1/bin - chmod +x jmeter - ./jmeter -n -t ../../../test.jmx -l testresults.jtl
修正测试脚本路径
你当前脚本中直接写test.jmx,默认会读取JMeter bin目录下的文件,而测试脚本一般存放在项目仓库中,需要写对应相对路径或绝对路径指向仓库内的jmx文件,避免文件找不到。路径加引号规避空格问题
如果路径中存在空格,必须用引号包裹完整路径,比如cd "c:\Program Files\apache-jmeter-5.4.1\bin",否则shell会把空格后的内容识别为独立参数,导致路径解析错误。
内容的提问来源于stack exchange,提问作者HARINI B K
相关产品推荐
相关产品推荐

