我在工作中使用的是Jenkins从属服务器,这些从属服务器是亚马逊现场实例,所以我使用共享文件夹(EFS)来挂载.m2 / .npm和工作区等共享文件夹。
当作业开始并尝试从远程git存储库中拉出时,构建会在克隆时挂起。
当我不使用efs并在即时实例本身上进行克隆时,一切都按预期工作,因此手动创建其他文件或通过ef上的Jenkins创建其他文件也可以正常工作。 共享文件夹的权限与Jenkins使用的用户相同。
任何建议会导致这种行为吗?
这是构建日志:
11:41:20 Fetching upstream changes from git@git.assembla.com:alpha.saas.git
11:41:20 > git --version # timeout=10
11:41:20 using GIT_SSH to set credentials jenkins@Dev_Builder(ssh)
11:41:20 > git fetch --no-tags --progress git@git.assembla.com:alpha.saas.git +refs/heads/*:refs/remotes/origin/* # timeout=5
11:41:29 > git rev-parse refs/remotes/origin/master^{commit} # timeout=10
11:41:29 > git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10
11:41:29 Checking out Revision e0dd60499d693a40fa0d3669201437b49cc2b0c4 (refs/remotes/origin/master)
11:41:29 > git config core.sparsecheckout # timeout=10
11:41:29 > git checkout -f e0dd60499d693a40fa0d3669201437b49cc2b0c4
11:48:59 Build was aborted
答案 0 :(得分:0)
所以看来问题出在git中Packfile太大了, 看起来EFS处理如此大的文件的速度非常慢,这导致它挂了这么长时间。 我通过使用 lsof 命令注意到了这一点:
lsof +D ./
指出索引文件和打包文件已打开很长时间,并且它们都很大:
./。git / objects / pack / pack-601f9b58380bc69d49bcc429d046c8940c5ed9d2.idx
./。git / objects / pack / pack-601f9b58380bc69d49bcc429d046c8940c5ed9d2.pack
为了解决这个问题,我在詹金斯(Jenkins)中使用了浅表克隆:
checkout([
$class: 'GitSCM',
branches: [[name: "$git_branch" ]],
doGenerateSubmoduleConfigurations: false,
extensions: [[$class: 'CloneOption', depth: 0, noTags: true, reference: '', shallow: true]],
submoduleCfg: [],
userRemoteConfigs: [[url: "$git_repo" , credentialsId: env.gitCredentialsJenkins]]])
这解决了这个问题,尽管克隆1.8GB的存储库仍需要很长时间。