Jenkins执行go test时出现Permission denied错误求助
解决Jenkins Pipeline中Go Test权限拒绝问题
以下是针对你遇到的go test权限错误的排查和解决步骤:
1. 修正GOPATH配置问题
你手动指定的GOPATH指向Jenkins构建临时目录,该目录的权限继承自Jenkins工作空间,即使以root运行也可能出现权限异常。Go 1.14+已默认支持Modules,无需手动设置GOPATH,建议移除该配置:
environment { GO111MODULE = 'on' // 修正变量名(原GO114MODULE是错误的,Go统一用GO111MODULE控制Modules) CGO_ENABLED = 0 // 移除自定义GOPATH设置 }
2. 确保测试目录及文件权限
代码checkout到Jenkins工作空间后,部分文件或目录可能因版本控制系统导出的权限问题导致无法读取/执行。在测试前添加权限修复步骤:
stage('Test') { steps { echo 'Running vetting' sh 'go vet ./...' echo 'Running test' // 修复test目录权限 sh 'chmod -R 755 ./test' // 推荐用标准方式运行测试,无需切换目录 sh 'go test ./test/...' } }
3. 调整测试执行方式
你原命令cd test && go test unit_test.go仅指定单个测试文件,这种方式会生成临时测试二进制文件,若当前目录权限不足则会触发权限拒绝。改用go test ./test/...可以递归运行test目录下所有测试,同时避免目录切换带来的权限问题。
4. 验证Jenkins运行用户权限
即使你认为Jenkins拥有root权限,仍需确认Jenkins进程实际运行用户。可以在Pipeline中添加sh 'whoami'命令查看当前执行用户,如果不是root,需调整Jenkins服务的运行用户为root,或给Jenkins用户赋予工作空间的完全权限。
内容的提问来源于stack exchange,提问作者mrtz
相关产品推荐
相关产品推荐

