Git插件性能提升

目标:通过启用更快的签出来增强用户体验

状态:完成

团队

细节

这个项目的目的是发现并改进git插件中潜在的性能提升区域。这样做的过程是为了找到git的两个共存实现之间的性能差异,CLI gitJGit.通过创建一个特性来利用这些差异是合乎逻辑的,该特性将自动切换git实现,以优化调整到特定的场景或用例。修复git插件中现有的性能问题以提高其整体性能也是合乎逻辑的。

该项目确定了git SCM checkout作为显示潜在增强范围的区域。改进该过程的任何部分都意味着直接减少Jenkins作业的总体执行时间。必威国际有限公司

项目背景

git插件是使用最广泛的Jenkins组件之一,它为Jenkins生态系统提供了git源代码必威国际有限公司管理功能。这些功能或git操作(如取回或结帐)是通过两个互斥的实现来提供的,CliGitAPIImplJGitAPIImpl

默认情况下,用户只启用命令行git。要启用JGit并充分了解新特性的好处,请访问以下文档:在git插件中启用JGit

我们的任务是在多个平台上比较这两种可用的存储库参数的实现(比如git对象的大小,分支的数量),从而得出一个所谓的普遍的规则这将帮助插件决定在特定情况下哪个实现是最佳的。

项目可交付成果

  • 删除一个冗余取操作(必威国际有限公司詹金斯- 49757)在初始检出期间(pr - 845

    • 此修复程序确保在使用自动测试确认预期行为的情况下,删除第二次取操作时不会造成存储库/用户数据丢失

  • 使用JMH基准测试框架进行性能比较(pr - 553

  • git插件的性能增强(pr - 931

性能比较及其结果

这是pr - 521它提供了CliGitAPIImpl和JGitAPIImpl之间性能比较的初始调查的代码和结果。

在整个项目中执行的各项基准的图形结果载于:

检出步骤中的性能增强

该项目引入了一个新特性,称为GitToolChooser它为特定的场景推荐了最佳的git实现。
用户不必担心为给定的远程存储库选择正确的实现。
以下是该功能的图形表示:

git穿孔即兴表演

评估阶段1

  1. 将JMH基准测试模块集成到git客户端插件

    • 选择一个git操作并编写一个基准测试

    • 验证基准测试结果

    • 存储库

  2. 修正git冗余获取问题必威国际有限公司詹金斯- 49757

    • 创建一个修复并编写自动化测试用例

    • 在投入生产前进行交互式测试

  3. 设计一个策略来实现插件的性能改进

评估阶段2

  1. 根据基准实施绩效改进:

    • GitToolChooser——一个试图为特定远程存储库推荐最佳git实现的类

    • 存储库

  2. 在git客户端插件中扩展了基准测试的范围

    • 对多个存储库参数进行基准测试

    • 多平台基准测试

资源

评估阶段3

这个阶段标志着git插件的发布,在GSoC期间执行了所有性能改进。这包括添加GitToolChooser,从checkout中删除冗余的第二次取,并在git客户端插件中添加JMH基准模块。

  1. Git Plugin 4.4.0发布

  2. Git Client Plugin 3.4.0发布

办公时间

办公时间安排在国际标准时间每周三14:30,有规律会议指出任何人都可以阅读。

链接