在mac上配置Jenkins + git插件会导致git clone挂起

时间:2012-10-10 13:26:23

标签: macos git jenkins

我目前正在运行Lion(10.7.4)的mac mini服务器上设置Jenkins,我遇到了git / github集成的一些问题。

要解决我遇到的问题,我已经设置了一个只有基础知识的测试工作,在这种情况下,只是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 - hudson.remoting.LocalChannel@1eaaf438
Using strategy: Default
Cloning the remote Git repository
Cloning repository origin

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

我显然为此寻找了这个,发现有几个人有同样的问题,但没有解决方案。

为了进一步解决问题,我尝试了一些方法:

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

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 git@github.com:MyProjectRedacted/FR-Dev.git /Users/Shared/Jenkins/Home/workspace/fr-develop-latest
251 64579 64578   0  2:05pm ??         0:03.98 ssh git@github.com 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 git@github.com:MyProjectRedacted/FR-Dev.git /Users/Shared/Jenkins/Home/workspace/fr-develop-latest就可以了。存储库被克隆。

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

所以...绝对是git插件的东西弄乱了。
我有正确jenkins用户设置的SSH密钥,我可以使用ssh git@github.com连接到远程git仓库

此时我有点卡住了 关于如何解决这个问题的任何想法?

2 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:0)

嗯,问题解决了,结果证明开始没有问题。

发生了两件让我留下印象git clone的事情:

  1. 进度未更新
  2. 昨天连接速度非常慢
  3. 我实际上忘了停止这份工作,当我今天回来时,一切都很好 欢呼声。