jenkins svn插件恢复动作比命令行工作慢?

时间:2014-12-09 03:50:59

标签: windows svn jenkins revert

我有三台安装了Jenkins v1.473的构建机器。

让我们称它们为机器A,B和C.所有都运行Windows 7 x64。 机器B和C jenkins安装从机器A继承。我只是将文件夹复制过来,所有东西都被导入并且工作正常。

我们最初有一个Windows命令行作业,它会调用svn revert,然后在一堆文件夹上进行svn update。在那之后,我们将构建我们的项目。平均运行时间约为10分钟。所有3台机器(带有tortoisesvn)的命令行工具的SVN版本为1.7

由于我们使用命令行svn命令,因此我们在发送作业完成电子邮件时无法访问$ CHANGES,因此我们切换到了Jenkins svn插件。 交换机首先在机器B和C上进行,在确认它工作正常后,我们对机器A应用了相同的更改。插件版本为1.50。

结帐策略设置为" 使用' svn update'尽可能地使用“恢复”#39;更新前"。 存储库浏览器设置为自动。

在Jenkins->配置下,Subversion工作区版本设置为1.7。 其他字段保持原样(排除revprop名称为空,验证存储库URL到第一个变量名称未选中,更新默认的Subversion凭据缓存后成功验证已选中)

现在,关于我的问题。

机器B和C的运行时间大致相同:约10分钟。

然而,在机器A上,运行时间增加了一倍以上:现在平均为25分钟。 查看工作日志,恢复部分似乎是罪魁祸首。

有没有理由从svn命令行切换到插件会让它运行得更慢?最重要的是,仅在一台特定的机器上

1 个答案:

答案 0 :(得分:1)

在所有机器上挖掘和测试多个工作后,我发现了这个:

  • 命令行工具比它们的插件相当快,很可能是由于程序本身的速度(编译的C二进制vs SVNKIT,用Java编写并在JVM上运行)
  • 机器A也比B和C慢,尽管有类似的规格,很可能是因为其他应用程序和服务同时运行(B和C是近乎全新的安装,而A已经运行了更长时间)时间,安装了更多应用程序等)

最后,我只是将清理/还原部分从更新中分离出来:

  • 清理/还原作业在命令行中进行(由于文件夹遍历我认为I / O很重)所以它的速度可以很快
  • 然后使用插件完成更新(并且仅更新,在插件中没有完成还原)(相当快,通常少于几分钟的数十个文件),这使我仍然可以访问CHANGES变量。

有了这个,我以某种方式设法使机器A的建造时间几乎保持不变(大约10分钟)。 然而,机器B和C的建造时间大大改善(一般从10分钟到5分钟)