Jenkins执行git push时遇Visual Studio仓库用户名读取失败求助
解决Jenkins中Git推送Visual Studio远程仓库失败的问题
我来帮你搞定这个问题!从你给出的错误输出和脚本来看,核心问题很明确:
fatal: could not read Username for 'https://nestle-globe.visualstudio.com': No such device or address
你设置的user.name和user.email只是Git提交时的身份标识,和远程仓库的访问认证完全是两回事——Jenkins执行push操作时,没有拿到访问Visual Studio仓库的有效凭证,才会报这个错。
下面是具体的解决步骤:
1. 先生成Visual Studio的个人访问令牌(PAT)
现在Visual Studio(Azure DevOps)已经不再支持用账号密码直接推送代码,必须用个人访问令牌:
- 登录你的Visual Studio账号,进入「用户设置」→「个人访问令牌」
- 新建令牌,勾选「代码」分类下的「读&写」权限,设置合适的有效期
- 保存好这个令牌,后续配置会用到
2. 在Jenkins中添加仓库访问凭证
- 打开Jenkins后台,进入「Manage Jenkins」→「Manage Credentials」
- 选择「全局域」(或者你的Job所属的域),点击「Add Credentials」
- 类型选「用户名和密码」,用户名填你的Visual Studio账号,密码填刚才生成的PAT
- 给凭证起个好记的名字(比如
VS-Nestle-Repo-Cred),保存即可
3. 配置你的Jenkins任务
- 打开出问题的Jenkins任务,找到「源代码管理」模块的Git配置区
- 在「凭证」下拉框里,选中你刚添加的
VS-Nestle-Repo-Cred - 确认远程仓库的URL是正确的HTTPS格式,比如
https://nestle-globe.visualstudio.com/[项目名]/_git/[仓库名]
4. 调整Shell脚本的细节(可选但更稳妥)
你脚本里用了git config --global,但Jenkins的每个Job可能运行在独立的上下文里,全局配置未必生效,建议改成针对当前仓库的本地配置:
git branch -a git checkout PROD-Backup-NHS touch newfile1 ls -lrt ${WORKSPACE} # 改用本地仓库配置,替代全局配置 git config user.email "user.name@nestle.com" git config user.name "user name" git add . git commit -m "Added file" # 直接push即可,Jenkins会自动调用配置好的凭证 git push origin PROD-Backup-NHS
额外排查点
- 检查Jenkins服务器能否正常访问
https://nestle-globe.visualstudio.com,可以在Jenkins节点上执行curl https://nestle-globe.visualstudio.com测试网络连通性 - 确认你的PAT没有过期,且权限确实包含代码的读写权限
内容的提问来源于stack exchange,提问作者Bobby
相关产品推荐
相关产品推荐

