1

我在 Windows 7 下使用 Jenkins 1.484,我在克隆 git 存储库时遇到了麻烦。

我已经正确配置了 Git,但是当我尝试克隆存储库时,这需要很长时间并且永远不会成功。它在以下情况下停止:

git --version git 版本 1.7.9.msysgit.0

如果十分钟后我确实停止了构建,这就是我所看到的:

ERROR: Error cloning remote repo 'origin' : Could not clone git@github.com:GBSA/Gottware-server.git
hudson.plugins.git.GitException: Could not clone git@github.com:GBSA/Gottware-server.git
    at hudson.plugins.git.GitAPI.clone(GitAPI.java:271)
    at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:1040)
    at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:982)
    at hudson.FilePath.act(FilePath.java:851)
    at hudson.FilePath.act(FilePath.java:824)
    at hudson.plugins.git.GitSCM.determineRevisionToBuild(GitSCM.java:982)
    at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1138)
    at hudson.model.AbstractProject.checkout(AbstractProject.java:1256)
    at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:589)
    at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:88)
    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:494)
    at hudson.model.Run.execute(Run.java:1502)
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
    at hudson.model.ResourceController.execute(ResourceController.java:88)
    at hudson.model.Executor.run(Executor.java:236)
Caused by: hudson.plugins.git.GitException: Error performing command: C:\Program Files (x86)\Git\bin\git.exe clone --progress -o origin git@github.com:GBSA/Gottware-server.git G:\jenkins\workspaces\gottwareproductiontests
    at hudson.plugins.git.GitAPI.launchCommandIn(GitAPI.java:870)
    at hudson.plugins.git.GitAPI.access$000(GitAPI.java:40)
    at hudson.plugins.git.GitAPI$1.invoke(GitAPI.java:267)
    at hudson.plugins.git.GitAPI$1.invoke(GitAPI.java:246)
    at hudson.FilePath.act(FilePath.java:851)
    at hudson.FilePath.act(FilePath.java:824)
    at hudson.plugins.git.GitAPI.clone(GitAPI.java:246)
    ... 14 more
Caused by: java.lang.InterruptedException
    at java.lang.ProcessImpl.waitFor(Native Method)
    at hudson.Proc$LocalProc.join(Proc.java:319)
    at hudson.Launcher$ProcStarter.join(Launcher.java:352)
    at hudson.plugins.git.GitAPI.launchCommandIn(GitAPI.java:851)
    ... 20 more
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:1052)
    at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:982)
    at hudson.FilePath.act(FilePath.java:851)

相反,如果我尝试执行从命令行配置的相同 GIT,则克隆成功

C:\Program Files (x86)\Git\bin>"C:\Program Files (x86)\Git\bin\git.exe" clone --progress -o origin git@github.com:GBSA/Gottware-server.git G:\jenkins\
workspaces\gottwareproductiontests
Cloning into 'G:\jenkins\workspaces\gottwareproductiontests'...
remote: Counting objects: 38007, done.
remote: Compressing objects: 100% (16268/16268), done.

出了什么问题?

4

1 回答 1

4

在 Windows 上,Jenkins 进程作为系统服务运行,因此它作为 SYSTEM 用户运行,而不使用您的帐户。您正在使用 git@github.com 类型的 URL,以便尝试使用 SSH,这将需要从像 pageant 这样的 ssh 代理或以 SYSTEM 用户身份运行时从 ~/.ssh/identity 中找到 ssh 密钥。

最简单的解决方案是使用 http 或 https 传输。当您在执行构建时拉而不是推送时,您不需要为这些协议配置用户名或密码。如果您的本地网络配置允许,您可以使用 git 协议 (git://github.com/...)。

或者,您可以使用 sysinternals 中的 psexec 以系统用户身份获取命令提示符并修复本地环境,以便 ssh 可以工作。psexec -i -s cmd.exe将产生一个 SYSTEM 命令提示符,然后您可以运行 msysGit bash shell 并设置合适的 ssh 密钥以向远程系统注册。我一直在 XP 上使用它 - 所以它可能不再适用于 Win7。您还可以将 Jenkins 配置为作为另一个用户帐户运行,但我没有在本地使用该方法。

于 2012-10-05T08:00:48.067 回答