2011-10-21 81 views
19

我已經成功地過了Git/SSH克隆Git倉庫在詹金斯在Windows 2008 32位Git倉庫過了Git/SSH。當我試圖做同樣的Windows 2008上的64位,控制檯輸出頁面被困在這裏:詹金斯無法克隆的Windows

Démarré par l'utilisateur anonymous 
Checkout:book/C:\Jenkins\workspace\book - [email protected] 
Using strategy: Default 
Last Built Revision: Revision 5d7ce4ae23c91fb201ee005e6db17bcd795ca965 (origin/HEAD, origin/master) 
Checkout:book/C:\Jenkins\workspace\book - [email protected] 
Cloning the remote Git repository 
Cloning repository origin 

當我停止生成(被卡在那裏,幾分鐘後),我得到了休息錯誤消息:

ERROR: Error cloning remote repo 'origin' : Could not clone [email protected]:zeljkofilipin/watirbook.git 
ERROR: Cause: Error performing command: C:\Git\bin\git.exe clone --progress -o origin [email protected]:zeljkofilipin/watirbook.git C:\Jenkins\workspace\book 
null 
Trying next repository 
ERROR: Could not clone repository 
FATAL: Could not clone 
hudson.plugins.git.GitException: Could not clone 
    at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:1042) 
    at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:968) 
    at hudson.FilePath.act(FilePath.java:785) 
    at hudson.FilePath.act(FilePath.java:767) 
    at hudson.plugins.git.GitSCM.checkout(GitSCM.java:968) 
    at hudson.model.AbstractProject.checkout(AbstractProject.java:1193) 
    at hudson.model.AbstractBuild$AbstractRunner.checkout(AbstractBuild.java:567) 
    at hudson.model.AbstractBuild$AbstractRunner.run(AbstractBuild.java:455) 
    at hudson.model.Run.run(Run.java:1404) 
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46) 
    at hudson.model.ResourceController.execute(ResourceController.java:88) 
    at hudson.model.Executor.run(Executor.java:230) 
  • 我可以通過克隆的Git倉庫只讀從詹金斯URL git://github.com/zeljkofilipin/watirbook.git在兩臺機器上
  • 我可以從日通過的Git/SSH URL [email protected]:zeljkofilipin/watirbook.git克隆在兩臺機器上
  • 我可以通過從詹金斯GIT中/ SSH URL的32位機器上克隆,而不是64位機器上e命令行。

我可以注意到兩臺機器之間唯一的區別(不包括我的筆記本電腦上的虛擬機,另一臺是瑞士的真機),第一個是32位,第二個一個是64位。

不確定這可能是相關的,但32位機器的位置已設置爲克羅地亞,64位機器位於瑞士(正如您可以從Git法語輸出中看到的那樣)。

欲瞭解更多信息,請參閱我的博客文章:Jenkins, Windows and Git

+0

您博客文章的鏈接不再有效;你可能想更新:) –

+1

@OwenBlacker謝謝你讓我知道,我修復了斷開的鏈接。 –

+0

謝謝,老兄! (我似乎無法在我的回覆中標記你;堆棧溢出是否與háček有問題?) –

回答

26

我經歷這些痛苦了最近。尤其令人沮喪的是在這種情況下缺少錯誤日誌:可能是因爲MSysgit在嘗試恢復時提示用戶在控制檯上 - 這不會通過Jenkins控制檯。

基於這裏我的經驗有幾個關鍵要素以觀察:

  1. 安裝了Msysgit和Cygwin的混合:MSysgit我 - 更好地工作,但我假設你正在使用的太
  2. 有些人有更多的運氣比<MSYSGIT_ROOT>\cmd\git.cmd<MSYSGIT_ROOT>\bin\git.exe
  3. 確保你的奴隸一樣用戶運行(這是不是在基於服務的安裝默認值)。 - 哦,我看看你得到了太
  4. 設置HOME窗戶奴隸變量明確地
  5. 基本上確保相同的.ssh鍵達到詹金斯下時。
  6. 用於調試,我發現創建一個沒有SCM的測試任務很有用,但是在「Execute shell/batch」構建步驟中運行git clone。這應該會揭示更多信息。順便說一句,你可以在相同的步驟做一個env也許ls %HOME%/.ssh

我覺得上面的是什麼給了我一個工作在Windows 7 64位詹金斯從Git的支持 - 儘管我認爲這更多的是一些其他精細的配置細節比64與32位。無論如何,祝你好運!

+0

謝謝,會嘗試你的建議,我會在我解決問題時更新我的​​問題。 –

+3

將git設置爲' \ cmd \ git.cmd'而不是' \ bin \ git.exe'修復了這個問題。 –

+0

很好,謝謝你的反饋。 (順便說一句,因爲一些奇怪的原因git。EXE對我來說工作得很好: -/ – inger

6

在最新版本的git中,必須使用%GIT_HOME%/ cmd/git.exe,而不是%GIT_HOME%/ bin/git.exe並找出運行jenkins服務的用戶的主目錄。

+0

這個問題在最後一天讓我煩惱。從... bin/git.exe更改爲... cmd/git.exe取得了訣竅。非常感謝! :) – Technext

2

從一個辛苦的經驗教訓的筆記。 我有問題讓ssh運行jenkins作爲ssh + git的指定用戶帳戶。

這是我必須做的來解決這個問題:

  1. 使用ssh-keygen(注意它們的所在位置)
  2. 集「家」這個位置生成密鑰

我試着用puttygen和GET_SSH = plink,所有失敗都很糟糕,但沒有明確的錯誤。

3

我面臨的另一個問題是,ssh.exe並沒有在關鍵文件的文件夾中尋找%userprofile%/.ssh文件夾。相反,它正在尋找文件夾C:\Program Files (x86)\Git\.ssh,該文件夾是空的,並且由於git repo所在機器上的ssh身份驗證提示而導致掛起。

我們剛將%userprofile%/.ssh下的密鑰文件複製到C:\Program Files (x86)\Git\.ssh,問題就解決了。

+0

我無法讓詹金斯憑證工作,在Git \ .ssh中彈出文件(並且說憑證:-none-)工作得很好。 –

0

當您必須使用每個用戶配置文件中的任何配置選項時, 〜/ .ssh/config你可以把它們放在C:\ Program Files文件(x86)\ Git \ etc \ ssh \ ssh_config中,關鍵文件可以放在C:\ Program Files文件中(x86)\ Git.ssh

0

如果您的帳戶已連接到域。然後你需要確保Jenkins Slave運行的用戶。爲打開目的設置 - >屬性「詹金斯奴隸」 - >登錄。並選擇必要用戶正確執行。

0

由於我的Windows Jenkins是一個slave,所以我需要配置該節點來查找cmd而不是inger所描述的bin中的git。爲此,請轉至管理Jenkins,管理節點,單擊相應的節點,單擊配置,然後轉到工具位置。在下拉列表中找到git,然後指定git.exe(包括git.exe)的路徑,如C:\ Program Files \ Git \ cmd \ git.exe。

我確認cmd/git.exe的工作方式與bin/git.exe在命令行和臨時jenkins作業中使用git命令(而不是scm repo)不同。