自上次更新jenkins和git插件以来,http auth via .netrc不再起作用了。关于这个问题我真的检查了很多线程。
我尝试使用可行的变体http://user:pass@url.tld/repo.git。但在内部我们提供的vm包含了开发所需的所有工作。在更新之前,我们刚刚在jenkins主文件夹中编辑了.netrc文件,jenkins工作得很好。
我也已经通过控制台git clone http://url.tld/repo.git尝试了,即使在jenkins用户上也能正常工作。
以下是一些细节:
.netrc
machine url
login user
password pass
此处配置掩码中jenkins的错误:无法连接到存储库:无法连接到http:// .... git(status = 401)
如果有人有想法会好的。
答案 0 :(得分:2)
使用Git客户端插件1.4.5,您需要为.netrc文件使用不同的格式。 Git客户端插件需要.netrc文件中主机的信息全部在一行中。所以改变这个
machine hostname
login user
password secret
到这个
machine hostname login user password secret
应该让它再次运作。
当然不是插件方面的最佳实现,但不幸的是目前的情况。请注意,行中的单词之间只能有一个空格。避免尾随空格。
除此之外,由于存在错误,无论主机名是否匹配,都将获取文件中的第一行。因此,如果您需要在.netrc文件中拥有多个主机,那么这将无效。或者更确切地说只列出第一个。没有已知的解决方法。
请注意,如果您在Windows下使用_netrc
文件,很可能无法找到它,因为git客户端插件(版本1.4.6)不会在Jenkins用户的家中搜索它目录。解决办法是在Windows下有一个.netrc
文件。
答案 1 :(得分:1)
最初使用Git客户端插件1.4.3检测到此问题,并且应该通过Nicolas De Loof在1.4.4中修复:
请参阅issue 20175。
尝试将git客户端插件降级到1.4.4 如果1.4.5引入了回归,则重新开放20175年。
Florian的answer(upvoted)建议git客户端插件的可能原因为1.4.5,关于.netrc
格式。
machine hostname login user password secret
(仅限一行,而不是几行)
Florian坚持in the comments存在一些错误:
- 如果您在
.netrc
文件中定义了多个主机,则无论是否正确,都将采用第一个主机。- 此外,在Windows下,很可能找不到
_netrc
文件,因为它未在Jenkins用户的主目录中搜索。
git客户端插件(现在,2013年11月)无法读取它(_netrc
文件)以检索凭据。
它适用于.netrc
,但不适用于_netrc
,无论是Windows还是Unix 所以除了.netrc
之外,我建议在Windows下的主目录中有一个相同的_netrc
文件,直到修复了这个错误(JENKINS-20688)。
答案 2 :(得分:1)
此处为所有其他人添加:
下载降级文件的链接:
Git客户端插件1.0.7:http://mirrors.jenkins-ci.org/plugins/git-client/1.0.7/git-client.hpi
Git Plugin 1.4.0:http://mirrors.jenkins-ci.org/plugins/git/1.4.0/git.hpi
答案 3 :(得分:0)
我不得不将Git客户端插件降级到1.3.0版本,以使其再次运行。
以下是下载链接:http://mirrors.jenkins-ci.org/plugins/git-client/1.3.0/git-client.hpi
答案 4 :(得分:0)
FWIW,对我来说,issue 21015
提到了解决方法