为什么通过Hudson获取Git失败,而通过命令行获取却可以?

11

我正在尝试从Github获取一个只读的Git存储库,并通过Hudson进行构建。但这个过程失败了。

以下是Hudson的输出:

Started by an SCM change
Checkout:workspace / d:\hudson\home\jobs\gdcm-hudson\workspace - hudson.remoting.LocalChannel@19ba1d8
Using strategy: Default
Checkout:workspace / d:\hudson\home\jobs\gdcm-hudson\workspace - hudson.remoting.LocalChannel@19ba1d8
GitAPI created
Fetching changes from the remote Git repository
Fetching upstream changes from git://github.com/malaterre/gdcm.git
[workspace] $ "C:\Program Files (x86)\Git\bin\git.exe" fetch -t git://github.com/malaterre/gdcm.git +refs/heads/*:refs/remotes/origin/*
[workspace] $ "C:\Program Files (x86)\Git\bin\git.exe" ls-tree HEAD
ERROR: Problem fetching from origin / origin - could be unavailable. Continuing anyway
ERROR: Could not fetch from any repository
FATAL: Could not fetch from any repository
hudson.plugins.git.GitException: Could not fetch from any repository
    at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:674)
    at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:641)
    at hudson.FilePath.act(FilePath.java:753)
    at hudson.FilePath.act(FilePath.java:735)
    at hudson.plugins.git.GitSCM.checkout(GitSCM.java:641)
    at hudson.model.AbstractProject.checkout(AbstractProject.java:1061)
    at hudson.model.AbstractBuild$AbstractRunner.checkout(AbstractBuild.java:479)
    at hudson.model.AbstractBuild$AbstractRunner.run(AbstractBuild.java:411)
    at hudson.model.Run.run(Run.java:1273)
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
    at hudson.model.ResourceController.execute(ResourceController.java:88)
    at hudson.model.Executor.run(Executor.java:129)

当我直接通过git bash命令行运行该获取命令时,我没有得到任何响应(我认为这意味着它已经工作)。
我查看了这个可能的解决方案: http://issues.hudson-ci.org/browse/HUDSON-7141?page=com.atlassian.jira.plugin.system.issuetabpanels%3Aall-tabpanel 但是使用该插件的版本并没有改变这种行为。
我甚至还没有让它与cmake一起工作,只是一直在下载。我该如何让它工作?
编辑:这个问题不是Problem cloning/fetching repository using Git plugin for Hudson on Windows的重现,因为我没有在服务器上作为服务运行。
4个回答

8

是的,我刚刚解决了这个确切的问题。如果你打开一个Windows资源管理器到d:\hudson\home\jobs\gdcm-hudson\workspace,你应该能够看到一个.git目录和没有其他东西。应该有一个工作副本,但没有。要解决这个问题,您需要通过运行以下命令来“启动”存储库:

git pull git://github.com/malaterre/gdcm.git

这应该会在 d:\hudson\home\jobs\gdcm-hudson\workspace 目录下创建一堆其他文件,与 .git 目录并列,然后您就可以在 hudson 中执行构建操作了。


你的意思是我需要将我的代码库克隆到工作区吗? - Wearybands
这已经有一段时间了,但如果它没有被克隆,你可能需要克隆它,是的。在我给出的答案中,我只需要拉一次就可以启动它。你可能有一个完全不同的问题。 - kelloti

5

这在之前一直工作良好的构建中发生了。解决方案只是删除工作空间目录并重新启动构建。


2
Hudson的Git插件最近出现了这种错误消息(问题6902,2010年7月)。在此之前,它通常会静默处理(这是误导性的)。
你是否定义了任何子模块?因为看起来像是Git插件Bug 4
我有以下设置:
  • 一个名为“master”的分支,其中包含对另一个项目的子模块引用
  • 一个名为“develop”的分支,不包含子模块引用
如果我配置了一个Hudson作业来构建/测试“develop”分支,构建会失败,因为它无法进行子模块检出。因为这发生在切换到“develop”分支之前,所以构建在任何事情开始之前就已经中断了。 解决方案 我假设扫描git ls-tree HEAD的输出以确定哪些条目是子模块的引用。此时,引用HEAD仍然指向master,我想在大多数情况下都是如此。也许可以在指定的分支上执行ls-tree而不是HEAD

0
记录一下,就我的情况而言,问题出在配置了一个特殊的 Git 可执行文件(在全局 Hudson 设置中)。由于缺少库,在我的某些构建主机上运行此可执行文件时失败了。当使用 /usr/bin/git 时,它可以工作。
因此,看起来所描述的错误消息确实可以指示任何 Git 错误。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接