波斯码BOSSMA Information Technology

Windows系统中Jenkins流水线拉取代码鉴权失败的问题

发布时间:2021年2月26日 / 分类:ALL, Devops / 3,002 次浏览 / 评论

鉴权失败有很多原因,这里只是其中一个很特殊的情况,原因是控制台字符编码问题。

1、现象

在流水线中使用checkout拉取,例如:

checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: '$REPOSITORY_NAME'],[$class: 'CleanBeforeCheckout']], submoduleCfg: [], userRemoteConfigs: [[ credentialsId: 'globaluser',url:'http://10.1.11.100:6000/bosima/Test1.git']]])

因为是私有仓库,这里使用了Jenkins凭据:credentialsId

确认凭据中的用户名和密码都没有问题,但是每次执行都是鉴权失败(returned status code 128,Authentication failed),返回值类似:

Caused by: hudson.plugins.git.GitException: Command "C:\Program Files\Git\bin\git.exe fetch --tags --force --progress -- http://10.1.11.144:3000/bosima/Test1.git +refs/heads/*:refs/remotes/origin/*" returned status code 128:
stdout: 
stderr: fatal: Authentication failed for 'http://10.1.11.144:3000/bosima/Test1.git/'

2、原因

尝试了各种方案,想到最开始的时候是好用的,所以不断卸载自己做过的修改和配置,最后发现是字符编码问题。

为了解决Window环境下控制台输出中文乱码的问题,修改了注册表:

[HKEY_CURRENT_USER\Software\Microsoft\Command Processor]

增加了一个项:

"AutoRun"="chcp 65001"

去掉这个注册表项目,问题得以解决。原因应该是在控制台执行git命令时用户名和密码被编码为无法正确识别的字符。

本博客所有文章如无特别注明均为原创。
复制或转载请以超链接形式注明转自波斯码,原文地址《Windows系统中Jenkins流水线拉取代码鉴权失败的问题

关键字:

建议订阅本站,及时阅读最新文章!
【上一篇】 【下一篇】