Jenkins执行Win10 cmd拉取局域网远程Git仓库失败,手动执行命令正常
核心问题原因
该问题是Windows环境下服务会话与交互式登录会话隔离的典型表现:
- 你交互式登录机器时访问过
\\INT-TEST-A-0的共享目录,访问凭证会被缓存到当前登录会话中,所以手动执行git命令可以正常识别UNC路径的远端仓库 - Jenkins如果以Windows服务形式运行,哪怕配置了和你登录相同的用户,默认启动的会话也不会继承交互式登录的共享访问凭证,也默认没有权限直接访问UNC路径的网络资源,因此git无法识别远端仓库路径
可落地解决方案
按照优先级从高到低尝试:
- 先修复Jenkins服务的运行配置
- 按下Win+R输入
services.msc打开服务管理器,找到Jenkins对应的服务项,右键点击「属性」 - 切换到「登录」标签页,确认选中了「此账户」且填入的用户名和你手动操作的账号完全一致,重新输入一遍该账号的登录密码后点击确认
- 勾选下方的「允许服务与桌面交互」选项,重启Jenkins服务后重新执行任务测试
- 按下Win+R输入
- 执行git操作前先挂载共享目录
如果修改服务配置后仍无效,在你的Jenkins任务的Windows批处理脚本最开头添加挂载共享的命令:
再执行后续的git fetch、git pull命令即可rem 提前挂载远程共享目录,替换为你实际的账号密码 net use \\INT-TEST-A-0\SST_Repository_Origin /user:你的登录账号 你的登录密码 - 替换git远端地址为file协议格式
部分版本的Windows Git在非交互式会话中对原生UNC路径的识别存在异常,可以将远端地址修改为file协议格式:git remote set-url origin file:////INT-TEST-A-0/SST_Repository_Origin
验证步骤
可以在Jenkins任务的批处理开头添加net use命令,查看执行日志中输出的已挂载共享列表,如果没有对应\\INT-TEST-A-0的共享项,即可确认是会话凭证缺失导致的问题。
内容的提问来源于stack exchange,提问作者mergintaim
相关产品推荐
相关产品推荐

