【问题标题】:Jenkins (Windows) very slow Git fetch詹金斯(Windows)非常慢的Git获取
【发布时间】:2015-06-18 09:10:50
【问题描述】:

我们在 Windows Server 2012 上安装 Jenkins 时遇到了缓慢的 git fetch 命令。我已经尝试了这些线程中提到的所有解决方案:

任何人都能够通过永久修复找到解决方案?

Jenkins 的控制台输出日志:

由远程主机启动

在工作区 F:\Jenkins\jobs\xxx\workspace 的 master 上构建

> git.exe rev-parse --is-inside-work-tree # timeout=10

从远程 Git 存储库获取更改

> git.exe 配置 remote.origin.url xhttp://scm/git/xxx # timeout=10

从 xhttp://scm/git/xxx 获取上游变化

> git.exe --version # timeout=10

使用 .gitcredentials 设置凭据

> git.exe config --local credential.helper store --file=\"C:\Users\APP_JE~1\AppData\Local\Temp\git7476037793811743133.credentials\" # timeout=10

> git.exe -c core.askpass=true fetch --tags --progress xhttp://scm/git/xxx +refs/heads/:refs/remotes/origin/

这里的问题:上述命令可能需要 30 秒到 120 秒。在本地开发机器上,这需要几秒钟。

> git.exe config --local --remove-section credential # timeout=10

版本信息:

Jenkins:1.608(最新)

Windows:服务器 2012

Git:1.9.5(Windows xhttp://git-scm.com/download/win 的最新版本)

Jenkins 的 Git 客户端插件:1.16.1(最新)

Jenkins 的 Git 插件:2.3.5(最新)

Jenkins 以在服务器上具有管理员访问权限的域用户身份运行

【问题讨论】:

  • 您是否尝试按照 [此处][1] 所述重新安装 git? [1]:stackoverflow.com/a/4506192/779338
  • 是的,我试过了。它没有帮助。我还应用了这 3 个配置选项,但没有运气:$ git config --global core.preloadindex true$ git config --global core.fscache true$ git config --global gc.auto 256
  • 您的服务器是否在与本地计算机不同的代理后面?我们的代理扫描所有文件有时会出现问题,这需要一些时间。
  • @michaelbahr 不,不是。使用 git Bash 从服务器手动运行命令没有问题。这是 git 和 Jenkins 结合的问题。
  • 这个 Thomas 有什么更新吗?我们在这里看到了同样的事情。

标签: git ssh jenkins jenkins-plugins git-fetch


【解决方案1】:

尝试启用 GIT 的一些调试/性能标志,以获取有关其管道内部哪些事情需要时间的更多信息,请参阅https://git-scm.com/book/en/v2/Git-Internals-Environment-Variables。例如,export GIT_TRACE=1 并尝试 GIT_TRACE_PERFORMANCE 和 GIT_TRACE_PACKET。

【讨论】:

  • 知道如何使用 Jenkins Git 插件启用这些标志,以及之后如何查看这些标志的输出吗?
【解决方案2】:

Version 2.6.1 of the Git client for Windows 解决了这个问题。现在它的运行速度非常快!

我在 Jenkins 中使用 git cmd 来自:

C:\Program Files\Git\cmd\git.exe

【讨论】:

  • 终于!这已经困扰我将近两年了!
  • 2.6.1 版本在哪里?截至今天,Git 似乎是 2.26.0。我仍然遇到这个最新版本的缓慢获取。即使通过“高级克隆行为”将 --depth 设置为 1 并增加超时。
【解决方案3】:

如果您不需要它们,请使用高级克隆行为并启用“不获取标签”复选框。 Git 仍应检出您指定的分支/标签。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-11
    • 1970-01-01
    • 1970-01-01
    • 2013-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-22
    相关资源
    最近更新 更多