我有一个 Jenkins 服务器试图拉取一个大的(1.7GB)Git 存储库。该存储库的用户做了一些顽皮的事情,例如将大 tar 文件以及其他 Git 存储库的副本放入其中。Jenkins 从未完成存储库的“分支索引”任务。查看磁盘上的存储库,它在 $JENKINS_HOME/caches/git-XXX/.git/objects/pack/ 中充满了大型 tmp_pack 文件。如果我自己检查一下 repo,它是 1.7GB;但由于所有这些 tmp_pack 文件,Jenkins 的副本有 140GB。
编辑:我应该更多地提及我的环境。我在 Kubernetes 中运行 Jenkins,使用 Kubernetes 插件将 Pod 作为 Jenkins 从机生成。主 Jenkins 在 NFS 上具有持久卷的 Pod 中运行。我正在使用 Jenkins 的多分支管道,因此所有逻辑都位于Jenkinsfile存储库的根目录中。
我发现了我的案例的问题。Jenkins 的全局 Git 超时为 10 分钟,但我的存储库需要 10 多分钟才能克隆。JENKINS-20387有更改超时的说明。你设定JAVA_OPTS=-Dorg.jenkinsci.plugins.gitclient.Git.timeOut=60。就我而言,我还必须更改从站的 pod 配置。