4

我们在 Windows Server 2003 Enterprise 上使用 Git + OpenSSH 设置了 Hudson,并且它工作了一段时间。然后突然,它开始在克隆期间一直挂在 12%,我们怀疑文件可能太大了。(它在所有其他机器上仍然可以正常工作,Windows Server 2003 标准,Windows 7 企业版),只有这台服务器。

所以我们切换到了 Putty 而不是 OpenSSH,它在 gitBash 和 gitExtensions 上工作,但在 Hudson 上仍然失败。因为我已经读到对于 plink 正确加载 ssh 密钥存在一些问题,所以我将 GIT_SSH 设置为一个脚本,该脚本将使用密钥加载 putty 并且可以从 gitBASH 正常工作,但它仍然无法使用 Hudson。

这是使用 PUTTY 失败的输出:

    Started by user anonymous
Checkout:workspace / <http://WINDOWS2003SERVER:8080/job/PROJECT/ws/> - hudson.remoting.LocalChannel@1c57a92
Using strategy: Default
Last Built Revision: Revision 2a56d9738e7c0af810e70e2e2051c41bd44f4252 (origin/master) Checkout:workspace / <http://WINDOWS2003SERVER:8080/job/PROJECT/ws/> - hudson.remoting.LocalChannel@1c57a92
GitAPI created
Cloning the remote Git repository
Cloning repository origin
$ C:\bin\Git\bin\git clone -o origin git@GITSERVER:project.git <http://WINDOWS2003SERVER:8080/job/PROJECT/ws/>
ERROR: Error cloning remote repo 'origin' : Could not clone git@GITSERVER:project.git
ERROR: Cause: Error performing C:\bin\Git\bin\git clone -o origin git@GITSERVER:project.git <http://WINDOWS2003SERVER:8080/job/PROJECT/ws/>
Command returned status code 128: Cloning into <http://WINDOWS2003SERVER:8080/job/PROJECT/ws/...>
fatal: The remote end hung up unexpectedly

    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:809)
     at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:740)
     at hudson.FilePath.act(FilePath.java:756)
     at hudson.FilePath.act(FilePath.java:738)
     at hudson.plugins.git.GitSCM.checkout(GitSCM.java:740)
     at hudson.model.AbstractProject.checkout(AbstractProject.java:1171)
     at hudson.model.AbstractBuild$AbstractRunner.checkout(AbstractBuild.java:480)
     at hudson.model.AbstractBuild$AbstractRunner.run(AbstractBuild.java:412)
     at hudson.model.Run.run(Run.java:1362)
     at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
     at hudson.model.ResourceController.execute(ResourceController.java:88)
     at hudson.model.Executor.run(Executor.java:145)

我们对我们的 SSH 协议并不严格,只要它有效,如果有人能告诉我为什么使用 openSSH 会失败,或者为什么 Hudson 使用 putty 和任何解决方案失败,我将非常感激!

4

4 回答 4

1

我一直想不通为什么 openSSH 不工作,但我终于让 PuTTY 一​​切正常。

我的解决方案如下:我创建了一个名为:myplink.bat 的批处理文件,它将使用私钥执行 putty,并且不需要运行选美。该文件内有以下内容:

@echo off
c:\pathto\plink.exe -i c:\pathto\id_rsa.pub

打开 gitbash 提示符并将 GIT_SSH 更改为此路径仅适用于该实例,为了使其永久设置为 gitbash,我修改了 c:\pathto\git\etc\profile 并在末尾添加:

export GIT_SSH=c:\pathto\myplink.bat

我还修改了 c:\pathto\git\cmd\git.cmd 并添加了:

@set GIT_SSH=c:\pathto\myplink.bat

这个修复了 git bash,但 hudson 仍然会失败,让我相信 hudson 的环境以某种方式改变了 git。然后在哈德森,我去管理哈德森-> 配置设置-> 环境变量我确保它被检查,并添加:名称:GIT_SSH 值:c:\pathto\myplink.bat

我重新启动了 hudson 服务,它终于工作了。

请注意,如果您的任何路径中有空格,那也可能会搞砸,因此请尽量保持路径空间空闲。

希望这可以帮助其他有 hudson+git+putty 问题的人。

于 2011-01-19T22:35:09.430 回答
0

您的 git 服务器上没有公钥。当以“git”身份登录时,从 hudson 服务器执行此操作。

ssh -v gitserver

研究输出。不应提示您输入密码。

如果你这样做了,或者有其他问题,你没有设置你的 ssh 密钥。

希望这可以帮助

于 2011-01-19T21:45:14.523 回答
0

您必须检查以下内容:

  1. 您正在使用运行 hudson 守护程序的用户的 ssh 密钥。例如,如果 user=hudson,那么您应该以 hudson 身份登录并生成 ssh 密钥
  2. 您已从正确的 .ssh/id_rsa.pub 文件(即运行 hudson daemon 的同一用户)将您的公钥加载到您的服务器(github、assembla)
  3. 您已将服务器的 RSA 指纹添加到 .ssh/known_hosts 文件中
于 2011-05-28T05:50:25.983 回答
0

我在linux(Ubuntu)服务器上运行同样的问题。这个链接(http://adhockery.blogspot.com/2009/11/git-and-hudson.html)解决了我的问题。

下面的文字是从链接中复制的。

事实证明,Git 需要设置一个用户名,而 Debian 软件包在安装 Hudson 时创建的 hudson 用户没有。通过使用 sudo nano /etc/passwd 将 Hudson,, 添加到 hudson 用户的条目中轻松修复(如果您查看自己的条目,您应该看到它需要去哪里)。

于 2011-10-19T03:25:03.537 回答