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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 12:30:20