Jenkins无法在Windows上通过Git / SSH克隆Git存储库

时间:2011-10-21 13:53:47

标签: windows git continuous-integration hudson jenkins

我已经在Windows 2008 32位上通过Git / SSH成功​​克隆了Jenkins中的Git存储库。当我尝试在Windows 2008 64位上执行相同操作时,控制台输出页面卡在此处:

Démarré par l'utilisateur anonymous
Checkout:book / C:\Jenkins\workspace\book - hudson.remoting.LocalChannel@1da691a
Using strategy: Default
Last Built Revision: Revision 5d7ce4ae23c91fb201ee005e6db17bcd795ca965 (origin/HEAD, origin/master)
Checkout:book / C:\Jenkins\workspace\book - hudson.remoting.LocalChannel@1da691a
Cloning the remote Git repository
Cloning repository origin

当我停止构建时(在被卡住几分钟后),我得到了剩下的错误消息:

ERROR: Error cloning remote repo 'origin' : Could not clone git@github.com:zeljkofilipin/watirbook.git
ERROR: Cause: Error performing command: C:\Git\bin\git.exe clone --progress -o origin git@github.com: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)
  • 我可以通过两台机器上Jenkins的Git只读URL git://github.com/zeljkofilipin/watirbook.git克隆存储库
  • 我可以从两台计算机上的命令行通过Git / SSH URL git@github.com:zeljkofilipin/watirbook.git进行克隆
  • 我可以在32位计算机上通过Jenkins的Git / SSH URL进行克隆,但不能在64位计算机上进行克隆。

我可以注意到两台机器之间的唯一区别(不包括那台笔记本电脑上的虚拟机,另一台是瑞士的真机),第一台是32位,第二台是64台位。

不确定这是否相关,但是32位机器的位置设置为克罗地亚,64位机器设置为瑞士(正如您可以从法语的Git输出中看到的那样)。

有关详细信息,请参阅我的博文:Jenkins, Windows and Git

8 个答案:

答案 0 :(得分:27)

我最近经历过这些痛苦。特别令人沮丧的是在这种情况下缺少错误日志:可能是因为MSysgit在尝试恢复时会在控制台上提示用户 - 这无法通过Jenkins控制台。

根据我的经验,这里有几个要注意的关键要素:

  1. 安装了Msysgit和Cygwin的混合:MSysgit对我来说效果更好 - 但我认为你也在使用它
  2. 有些人在使用<MSYSGIT_ROOT>\cmd\git.cmd时比<MSYSGIT_ROOT>\bin\git.exe
  3. 更幸运
  4. 确保您的奴隶以同一个用户身份运行(这不是基于服务的安装时的默认设置).. - 哦,我知道你也有这个用户
  5. 为windows slaves explicity设置HOME变量
  6. 基本上确保在Jenkins下达到相同的.ssh键。
  7. 进行调试时,我发现创建没有SCM的测试作业很有用,但在“执行shell / batch”构建步骤中运行git clone。这应该会显示更多信息。顺便说一句,您可以在同一步骤中执行env,也许ls %HOME%/.ssh
  8. 我认为以上是让我在git支持下运行Windows 7 64位Jenkins从站的原因 - 尽管我认为这与其他一些精细的配置细节有关,而不是64位和32位。祝你好运!

答案 1 :(得分:6)

在最新版本的git中,必须使用%GIT_HOME%/ cmd / git.exe,而不是%GIT_HOME%/ bin / git.exe并找出运行jenkins服务的用户的主目录。

答案 2 :(得分:3)

我面临的另一个问题是,ssh.exe没有查看密钥文件的%userprofile%/.ssh文件夹。相反,它正在查找文件夹C:\Program Files (x86)\Git\.ssh,该文件夹为空,并且由于git repo所在的机器上的ssh身份验证提示导致挂起。

我们刚刚将%userprofile%/.ssh下的密钥文件复制到C:\Program Files (x86)\Git\.ssh,问题就解决了。

答案 3 :(得分:2)

来自艰苦的学习课程的笔记。 我在使用ssh运行Jenkins作为ssh + git的命名用户帐户时遇到了问题。

以下是我必须采取的措施来解决问题:

  1. 使用ssh-keygen生成密钥(注意它们所在的位置)
  2. 将“HOME”设置为此位置
  3. 我尝试使用puttygen和GET_SSH = plink,这些都非常糟糕,但没有明显的错误。

答案 4 :(得分:0)

当您必须使用来自每用户配置文件的任何配置选项时,例如。 〜/ .ssh / config你可以把它们放在C:\ Program Files(x86)\ Git \ etc \ ssh \ ssh_config中,关键文件可以放在C:\ Program Files(x86)\ Git.ssh

答案 5 :(得分:0)

如果您的帐户已附加到域。然后你需要确保运行Jenkins Slave的用户。为此目的打开设置 - &gt; 属性 &#34; Jenkins Slave&#34; - &gt; 登录。并从 中选择必要的 用户 ,以便正确执行。

答案 6 :(得分:0)

由于我的Windows Jenkins是奴隶,我需要配置该节点以在cmd中找到git而不是inger所描述的bin。要执行此操作,请转至Manage Jenkins,Manage Nodes,单击相应的节点,单击Configure,然后转到Tool Locations。在下拉列表中找到git,然后指定git.exe(包括git.exe)的路径,如C:\ Program Files \ Git \ cmd \ git.exe。

我确认cmd / git.exe与命令行中的bin / git.exe以及使用git命令(而不是scm repo)的临时jenkins作业的工作方式不同。

答案 7 :(得分:0)

https://wiki.jenkins-ci.org/display/JENKINS/GitHub+Plugin

只需将支持ssh的用户登录添加到Jenkins,它就可以顺利运行。