簡體   English   中英

Git在使用Jenkins從共享文件夾中的存儲庫中提取時掛起

[英]Git hangs while pulling from repository on shared folder using Jenkins

我在我的工作中使用Jenkins slave,奴隸是amazon spot實例,因此我使用共享文件夾(EFS)來安裝共享文件夾,如.m2 / .npm和工作區。

當作業開始並嘗試從遠程git存儲庫中提取時,構建會在克隆時掛起。

當我沒有在現場實例上使用efs並克隆時,一切都按預期工作,手動創建其他文件或通過efs上的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

所以似乎問題是git中的大包文件大小,看起來像EFS處理這么大的文件很慢,這使得它掛起這么久。 我已經通過使用lsof命令注意到了它:

lsof +D ./

哪個指出它的索引文件和packfile很長時間都是打開的,它們都是大文件:

./.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的存儲庫仍需要很長時間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM