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

我已经在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 

当我停止构build(在那里呆了几分钟之后),我得到了其余的错误信息:

 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) 
  • 我可以克隆存储库通过Git只读urlgit://github.com/zeljkofilipin/watirbook.git从Jenkins在两台机器上
  • 我可以从两个机器上的命令行通过Git / SSH URL git@github.com:zeljkofilipin/watirbook.git进行克隆
  • 我可以在32位机器上通过Jenkins的Git / SSH URL进行克隆,但不能在64位机器上进行克隆。

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

不知道这可能是相关的,但32位机器的位置设置为克罗地亚,64位机器瑞士(你可以从法国的Git输出看到)。

欲了解更多信息,请参阅我的博客文章: Jenkins,Windows和Git

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

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

  1. Msysgit和Cygwin的组合安装:MSysgit为我工作更好,但我也假设你也使用
  2. 有些人比<MSYSGIT_ROOT>\bin\git.exe有更多的运气, <MSYSGIT_ROOT>\cmd\git.cmd <MSYSGIT_ROOT>\bin\git.exe
  3. 确保你的奴隶作为同一个用户运行(这不是默认的基于服务的安装) – 哦,我明白你也得到了
  4. 为windows从属设置HOME变量
  5. 基本上确保在詹金斯下达到相同的.ssh键。
  6. 对于调试,我发现创建一个没有SCM的测试工作很有用,但是在“Execute shell / batch”构建步骤中运行git clone 这应该显示更多的信息。 顺便说一句,你可以做一个env在同一步骤,也许ls %HOME%/.ssh

我认为上面是给了我一个Windows 7 64位Jenkins从属工作支持git的工作 – 虽然我认为这与其他一些精细的配置细节有关,而不是64比32比特。 无论如何,祝你好运!

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

我遇到的另一个问题是,ssh.exe没有查看关键文件的%userprofile%/.ssh文件夹。 相反,它正在寻找文件夹C:\Program Files (x86)\Git\.ssh这是空的,并导致挂钩,由于git回购所在的机器上的SSH身份验证提示。

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

从一个辛苦的教训笔记。 我有问题得到ssh工作运行詹金斯ssh + git命名的用户帐户。

这是我必须做的解决这个问题:

  1. 使用ssh-keygen生成密钥(注意它们位于何处)
  2. 设置“HOME”到这个位置

我尝试了puttygen和GET_SSH = plink,所有失败非常糟糕,但没有明确的错误。

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

如果您的帐户连接到域。 然后,您需要确保Jenkins Slave运行的用户。 为了打开设置 – > “Jenkins Slave”的 属性 – > 登录 并从域中选择必要的用户以正确执行。

由于我的Windows Jenkins是一个奴隶,我需要配置该节点来查找cmd中的git,而不是inger中所描述的bin。 要做到这一点,去管理詹金斯,管理节点,点击适当的节点,点击配置,然后转到工具位置。 在下拉列表中找到git,然后指定git.exe(包括git.exe)的路径,如C:\ Program Files \ Git \ cmd \ git.exe。

我确认了cmd / git.exe与bin / git.exe在命令行和临时jenkins作业中使用git命令(而不是scm repo)不同。

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

只需添加一个启用SSH的用户登录到詹金斯,它应该工作顺利。