我目前正在运行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仓库
此时我有点卡住了 关于如何解决这个问题的任何想法?
答案 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
的事情:
我实际上忘了停止这份工作,当我今天回来时,一切都很好 欢呼声。