本地Jenkins运行JMeter的.jmx文件时出现Permission Denied错误
解决Jenkins运行JMeter脚本时的「Permission Denied」问题
这个问题的核心原因很明确:Jenkins的运行用户和你本地终端的用户权限不匹配。你在终端里用自己的用户身份执行JMeter,对当前目录有读写权限;但Jenkins是用系统分配的专属用户(比如macOS上默认是jenkins用户)来执行脚本,这个用户没有当前工作目录的写入权限,所以无法创建jmeter.log和result.jtl文件,导致报错。
下面给你几个可行的解决方案:
1. 显式指定日志和结果文件的路径到Jenkins有权限的目录
最稳妥的方式是修改JMeter命令,把日志和结果文件放到Jenkins的工作空间目录(这个目录Jenkins用户默认有完全权限)。比如:
jmeter.sh -Jjmeter.save.saveservice.output_format=xml -n -t /Users/Shared/Jenkins/Performance/JMeterTests/Request.jmx -l ${WORKSPACE}/result.jtl -j ${WORKSPACE}/jmeter.log
这里的${WORKSPACE}是Jenkins内置的环境变量,会自动指向当前Job的工作空间路径,不用手动写死路径,通用性更强。
2. 给Jenkins用户授予目标目录的读写权限
如果你不想修改命令路径,可以在本地终端执行命令,给Jenkins运行用户授权:
- 首先确认Jenkins的运行用户(可以在Jenkins后台「Manage Jenkins」→「Script Console」执行
println System.getProperty("user.name")查看) - 然后给目标目录授权:
# 替换jenkins为实际的Jenkins运行用户,替换/path/to/your/dir为你的脚本执行目录 sudo chown -R jenkins:jenkins /path/to/your/dir
如果只是临时测试,也可以用宽松权限(不推荐生产环境使用):
sudo chmod -R 777 /path/to/your/dir
3. 先排查当前执行环境的权限状态
在Jenkins的shell步骤开头添加两行命令,先确认当前执行的用户和工作目录:
whoami pwd
这样你就能直观看到Jenkins是用哪个用户在哪个目录下执行命令,方便快速定位权限问题的根源。
内容的提问来源于stack exchange,提问作者Aneesh Goel
相关产品推荐
相关产品推荐

