2012-10-10 77 views
0

我目前正在运行Lion(10.7.4)的mac mini服务器上设置Jenkins,并且遇到与git/github集成有关的一些问题。在Mac上配置Jenkins + git插件导致git克隆挂起

要解决我遇到的问题,我已经设置了一个测试工作只有非常基础,在这种情况下,只是git存储库。这项工作应该简单地克隆远程回购。
这是什么目前发生的事情:

Started by user anonymous 
Building in workspace /Users/Shared/Jenkins/Home/workspace/fr-develop-latest 
Checkout:fr-develop-latest//Users/Shared/Jenkins/Home/workspace/fr-develop-latest - [email protected] 
Using strategy: Default 
Cloning the remote Git repository 
Cloning repository origin 

...它只是挂在那儿很长一段时间(最终超时)。

我明显地为此搜索了这个,发现有几个人有同样的问题,但没有解决方案。

为了进一步排除故障,我尝试了几件事:

。我添加了一个只执行简单的export命令的“Execute Shell”构建步骤。这里的输出是:

Started by user anonymous 
Building in workspace /Users/Shared/Jenkins/Home/workspace/test 
[test] $ /bin/sh -xe /var/folders/05/tx3h6q9d0fd357pwxqswnqb400007v/T/hudson3541244199270773922.sh 
+ export 
export BUILD_ID="2012-10-10_14-13-21" 
export BUILD_NUMBER="16" 
export BUILD_TAG="jenkins-test-16" 
export BUILD_URL="http://ctx.local:8080/job/test/16/" 
export EXECUTOR_NUMBER="0" 
export HOME="/Users/Shared/Jenkins" 
export HUDSON_COOKIE="19f08f0b-059d-40b9-9672-ead63c741910" 
export HUDSON_HOME="/Users/Shared/Jenkins/Home" 
export HUDSON_SERVER_COOKIE="82054d3c12fc596dd66eabce21a6bf3e" 
export HUDSON_URL="http://ctx.local:8080/" 
export JAVA_ARCH="x86_64" 
export JAVA_MAIN_CLASS_63290="Main" 
export JENKINS_HOME="/Users/Shared/Jenkins/Home" 
export JENKINS_SERVER_COOKIE="82054d3c12fc596dd66eabce21a6bf3e" 
export JENKINS_URL="http://ctx.local:8080/" 
export JOB_NAME="test" 
export JOB_URL="http://ctx.local:8080/job/test/" 
export LOGNAME="jenkins" 
export NODE_LABELS="master" 
export NODE_NAME="master" 
export OLDPWD 
export PATH="/usr/bin:/bin:/usr/sbin:/sbin" 
export PWD="/Users/Shared/Jenkins/Home/workspace/test" 
export SECURITYSESSIONID="186ae" 
export SHELL="/bin/bash" 
export SHLVL="1" 
export TMPDIR="/var/folders/05/tx3h6q9d0fd357pwxqswnqb400007v/T/" 
export USER="jenkins" 
export WORKSPACE="/Users/Shared/Jenkins/Home/workspace/test" 
export __CF_USER_TEXT_ENCODING="0xFB:0:0" 
export com.apple.java.jvmMode="client" 
export com.apple.java.jvmTask="CommandLine.java" 
Finished: SUCCESS 

。在执行原来的测试工作,我的shell跑ps -ef | grep git和得到这个:

251 64578 63290 0 2:05pm ??   0:00.22 /usr/bin/git clone --progress -o origin [email protected]:MyProjectRedacted/FR-Dev.git /Users/Shared/Jenkins/Home/workspace/fr-develop-latest 
251 64579 64578 0 2:05pm ??   0:03.98 ssh [email protected] git-upload-pack 'EFEdcuationFirstMobile/FR-Dev.git' 
251 64582 64578 0 2:05pm ??   0:03.36 git index-pack --stdin -v --fix-thin --keep=fetch-pack 64578 on ctx.ci.local 

的shell,运行在用户jenkins,执行相同的命令/usr/bin/git clone --progress -o origin [email protected]:MyProjectRedacted/FR-Dev.git /Users/Shared/Jenkins/Home/workspace/fr-develop-latest作品就好了。存储库被克隆。

我终于尝试用相同的命令添加一个新的'Execute Shell'构建步骤。 它也有效。

所以......绝对是一些与git插件混淆的东西了。
我有正确的jenkins用户设置SSH密钥,我可以使用SSH [email protected]

在这一点上我有点卡住连接到远程的git回购。
有关如何解决此问题的任何想法?

回答

0

那么,问题解决了,结果是没有问题开始。

发生了两件事是给人的印象git clone挂:

  1. 进度没有被更新
  2. 连接是令人难以置信的慢昨日

我居然忘了停止作业当我今天回来的时候,一切都很好。
干杯。

1

我看到了类似的症状,我发现它是由Jenkin的Git插件clone()方法(请参阅下面的代码片段)中的工作空间的递归删除引起的。就我而言,我们有大量共享单个自定义工作区的作业,因此删除调用需要数小时才能完成。删除自定义工作区后,克隆操作成功完成。

https://github.com/jenkinsci/git-plugin/blob/master/src/main/java/hudson/plugins/git/GitAPI.java

final String source = remoteConfig.getURIs().get(0).toPrivateString(); 

listener.getLogger().println("Cloning repository " + source); 
final int[] gitVer = getGitVersion(); 

try { 
    workspace.deleteRecursive(); // This line was taking forever 
} catch (Exception e) { 
    e.printStackTrace(listener.error("Failed to clean the workspace")); 
    throw new GitException("Failed to delete workspace", e); 
}