繁体   English   中英

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

[英]Configuring Jenkins + git plugin on a mac is causing git clone to hang

我目前正在运行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

...并且它只是挂了很长时间(最终超时)。

我显然是在四处寻找这个问题,并发现了几个有相同问题的人,但是没有解决方案。

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

我添加了仅运行简单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

在执行原始测试作业时,我运行了ps -ef | grep git 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

在以用户jenkins运行的shell上,执行相同的命令/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仓库。

在这一点上,我有点卡住了。
关于如何解决此问题的任何想法?

我看到了类似的症状,我发现这是由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);
}

好了,问题解决了,结果发现一开始没有问题。

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

  1. 进度没有更新
  2. 昨天的连接速度非常慢

我实际上忘了停止工作,今天回来时,一切都很好。
干杯。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM