Jenkins中出现‘Command "git clean -ffdx"返回状态码1’该如何解决?
解决Jenkins任务中
git clean -ffdx因Go包权限失败的问题 方案1:调整Jenkins执行用户的目录权限
Jenkins任务默认以jenkins用户运行,大概率是该用户没有Go模块缓存目录的删除权限。直接修改目录归属即可:
sudo chown -R jenkins:jenkins /path/to/your/job/workspace/go/pkg/mod
临时应急的话,也可以直接放开目录写权限(不推荐长期使用,存在安全风险):
sudo chmod -R u+w /path/to/your/job/workspace/go/pkg/mod
方案2:让git clean跳过Go模块缓存目录
没必要让git处理Go的模块缓存,直接在clean命令中排除该目录:
git clean -ffdx --exclude=go/pkg/mod
或者在项目根目录的.gitignore中添加go/pkg/mod/,这样git clean默认就不会操作这个目录。
方案3:用Go官方命令清理模块缓存
Go本身提供了专门清理模块缓存的命令,比git clean更适配这类场景。把Jenkins任务里的git clean -ffdx替换为:
go clean -modcache
如果还要清理其他文件,可以组合执行:
go clean -modcache && git clean -ffd
方案4:检查是否有进程锁定文件
文件被其他进程占用也会导致删除失败,在Jenkins运行节点上用lsof排查锁定的文件:
lsof /path/to/go/pkg/mod/github.com/jfrog/build-info-go@v1.6.0/build/testdata/npm/_cacache/content-v2/sha512/32/d8
找到对应进程ID后杀掉,再重新执行任务。
内容的提问来源于stack exchange,提问作者adrianmcmenamin
相关产品推荐
相关产品推荐

