自从上一次更新jenkins和git插件以来,http通过.netrc就不再起作用了。关于这个问题,我确实查了很多线索。
我还试着使用可工作的变体http://user:pass@url.tld/repo.git。但在内部,我们正在提供一个vm,其中包含了发展所需的所有工作。在更新之前,我们刚刚编辑了jenkins主文件夹中的.netrc文件,而且jenkins工作得很好。
我还通过控制台git克隆http://url.tld/repo.git进行了尝试,即使在jenkins用户上也是如此。
以下是一些细节:
The .netrc
machine url
login user
password pass
这里,配置掩码中jenkins的错误:未能连接到存储库:未能连接到http:// ....git (status = 401)
如果有人有主意的话就好了。
发布于 2013-10-26 11:42:08
这个问题最初是在Git客户端插件1.4.3中检测到的,由尼古拉斯·德洛夫在1.4.4中进行修复。
见第20175期。
尝试将git客户端插件降级到1.4.4。
如果1.4.5引入回归,那么重新发行20175期.
佛里安的回答为git客户端插件提供了一个可能的原因,即.netrc
格式为1.4.5。
machine hostname login user password secret
(只有一行,而不是几行)
.netrc
文件中定义了多个主机,那么无论是否正确,第一个主机都将被接受。_netrc
文件,因为它不在Jenkins用户的主目录中搜索。
git客户端插件(现在是2013年11月)不会读取它(一个_netrc
文件)来检索凭据。
它适用于.netrc
,但不适用于_netrc
,无论是Windows还是Unix。
因此,我建议在Windows下的主目录中,除了_netrc
之外,还有一个相同的_netrc
文件,直到修复了这个bug (詹金斯-20688)。发布于 2013-11-20 19:01:18
对于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
文件。
发布于 2013-10-26 15:16:08
在此为所有其他人添加:
下载降级文件的链接:
Git客户端插件1.0.7:http://mirrors.jenkins-ci.org/plugins/git-client/1.0.7/git-client.hpi
Git插件1.4.0:http://mirrors.jenkins-ci.org/plugins/git/1.4.0/git.hpi
https://stackoverflow.com/questions/19605752
复制相似问题