2013-10-26 51 views
1

自jenkins和git插件的最後更新以來,通過.netrc的http認證不再有效。我真的檢查了很多關於這個問題的線索。jenkins git插件http認證.netrc

我試圖使用它的工作變種http://user:[email protected]/repo.git。但是在內部,我們提供了一個包含所有需要的開發工作的虛擬機。在更新之前,我們只是編輯了jenkins主文件夾中的.netrc文件,jenkins完美地工作。

我也試過通過控制檯git克隆http://url.tld/repo.git,它工作正常,即使在jenkins用戶。

這裏還有一些細節:

  • 詹金斯:v1.536
  • GIT插件:V2.0
  • GIT客戶端插件:v1.4.5
  • GIT:1.8.4.GIT
  • 的Centos:6.4
  • 的Java:1.6.0

所述的.netrc

machine url 
     login user 
     password pass 

在這裏,在配置掩模詹金斯的錯誤:未能連接到存儲庫:未能連接到http:// ...的git(狀態= 401)

將如果有人有想法,那就好了。

回答

1

就此問題與Git的客戶端插件1.4.3最初檢測,應該是固定在1.4.4通過Nicolas De Loof
issue 20175

嘗試並將git客戶端插件降級到1.4.4。
如果1.4.5引入了迴歸,然後再重新打開的問題20175.

Floriananswer(upvoted)提出一個可能的原因git的客戶端插件1.4.5,對於.netrc格式。

machine hostname login user password secret 

(一行只,而不是幾行)

Florian堅持in the comments的一些漏洞的存在:

  • 如果你在.netrc文件中定義多個主機,第一個將被採取,不管它是否是正確的。
  • 另外,在windows下,一個_netrc文件很可能不會被找到,因爲它不在Jenkins用戶的主目錄中搜索。
    它(一個_netrc文件)不被git客戶端插件(現在,2013年11月)讀取以檢索證書。
    它與.netrc正常工作,但與_netrc無關,無論是Windows還是Unix。
    因此,我建議除了_netrc之外,還要在Windows下的主目錄下有一個相同的.netrc文件,直到修正此錯誤(JENKINS-20688)。

He mentions jenkinsci/git-client-plugin patch on GitHub的存在。

+0

提到這個工作不是真的適合我。版本1.4.4也無法正常工作。我使用git-plugin 1.4和git-client-plugin 1.0.7進行了測試,現在這個工作正常! – maTu

+0

如果在.netrc文件中定義了多個主機,則無論第一個主機是否是正確主機,都將採用第一個主機。另外,在windows下,一個_netrc文件很可能不會被找到,因爲它不會在Jenkins用戶的主目錄中被搜索到。 – Florian

+0

@Florian聽起來不太好......是不是總是在'%HOME%'下搜索'_netrc'? – VonC

2

隨着Git的客戶端插件1.4.5,你需要使用不同的格式,爲您的.netrc文件。 Git客戶端插件需要一行中.netrc文件中的主機信息。因此,改變這種

machine hostname 
    login user 
    password secret 

這個

machine hostname login user password secret 

應該使它重新工作。

當然不是插件方面的最佳實現,但不幸的是目前的情況。請注意,行中的單詞之間只能有一個空格。避免拖尾空白。

除此之外,由於一個錯誤,文件中的第一個這樣的行將被採取,無論主機名是否匹配。因此,如果您需要在.netrc文件中包含多個主機,那麼這將不起作用。或者只有第一個列出。沒有已知的解決方法。因爲git客戶端插件(版本1.4.6)不在Jenkins用戶的主目錄中搜索它,所以如果你在windows下使用_netrc文件,很可能會找不到它,因爲git客戶端插件(在版本1.4.6中)不會搜索它。解決辦法是在Windows下也有一個.netrc文件。

+0

有趣。 +1。我在我的答案中引用了您的解決方法以提高可見性。 – VonC

+0

對於那些不想降級但仍然需要文件中的多個主機的用戶,並且在修正官方插件之前自行編譯固定版本都可以,但是有一個[GitHub上提供的補丁](https:// github。 COM/FZS /混帳客戶端插件/樹/ NETRC的解析)。 – Florian

+0

在我的例子中,添加單行文件'_netrc'(for Git)和'.netrc'(用於Git Client)到'C:\ Users \ '文件夾有所幫助。還要確保Jenkins中的'Git可執行文件路徑'設置爲'cmd \ git.exe',而不是'bin \ git.exe'。 – mgr32