繁体   English   中英

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

[英]Jenkins can not clone Git repository over Git/SSH on Windows

我已经在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克隆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>\\cmd\\git.cmd<MSYSGIT_ROOT>\\bin\\git.exe
  3. 确保你的奴隶运行为同一个用户(这不是基于服务的安装的默认设置).. - 哦,我看到你也有这个
  4. 为windows slave设置HOME变量明确
  5. 基本上确保在Jenkins下达到相同的.ssh键。
  6. 对于调试,我发现创建一个没有SCM的测试作业很有用,但是在“执行shell / batch”构建步骤中运行git clone 这应该会显示更多信息。 顺便说一句,你可以做一个env在相同的步骤,也许ls %HOME%/.ssh

我认为以上是让我在git支持下运行Windows 7 64位Jenkins从站的原因 - 尽管我认为这与其他一些精细的配置细节有关,而不是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 repo所在的机器上的ssh身份验证提示而导致挂起。

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

来自艰苦学习课程的笔记。 我在使用ssh运行Jenkins作为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。 要执行此操作,请转至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作业的工作方式不同。

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

只需将一个启用ssh的用户登录添加到Jenkins,它应该可以顺利运行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM