有没有办法加快Visual Studio团队服务(和TFS)的构建速度

时间:2015-08-04 14:19:30

标签: tfs continuous-integration azure-devops tfsbuild

我们的团队使用visual studio online建立了持续集成。 我们已经尝试通过付费构建限制来提升我们的高级订阅,这是我们无法实现的。但是,构建时间异常缓慢。

构建将在队列中停留几分钟,然后需要几分钟才能运行[即使在测试时将Nuget软件包添加到源代码管理中]。

有没有办法加快Visual Studio Online的构建速度? 如果没有什么是好的选择?

我认为在Azure VM上接受或设置我们自己的持续集成服务器是最坏的情况回退。

1 个答案:

答案 0 :(得分:33)

托管构建服务器存在一些缺陷。首先,他们总是清理没有保留的图像,因此您的源,包和以前构建的二进制文件不可用。因此,进一步加快构建速度的唯一方法是:

  • 通过以NuGet包的形式重复使用以前的结果,减少您构建的项目数量。这将要求您将解决方案分解为较小的位并使用Visual Studio Team Services的包管理功能或MyGet等第三方服务。
  • 并行化您的构建。如果您正在构建多个项目或多个配置,则可以使用MultiConfiguration选项来启动多个代理上的多个构建(在这种情况下,您需要分配多个托管代理)enter image description here
  • 启用BuildInParallel以允许MsBuild启用多个实例并启用MaxCpuCount=2以使用托管代理上可用的多个CPU核心。它看起来像是在A3实例上运行,它可以让你玩4个内核。如果您同时使用BuildInParallelMaxCpuCount,请不要将MaxCpuCount上的核心数量最大化。
  • 使用OutputPath将所有输出构建到单个目录。
  • 使用构建任务上的复选框启用并行测试执行。
  • 尽可能多地调整工作区映射。不需要的披风文件夹,只映射你真正需要的东西。
  • 跳过您不熟悉的CI构建所需的一切。您可能希望关闭Code Analaysis并仅在每晚构建时运行完整的测试套件,以增加您的反馈时间,即使您正在降低反馈质量。

这与你能做的一样多。您无法在托管池中租用更快的VM,并且您无法使用MsBuild中的任何功能,这些功能将允许您执行增量构建或至少对工作区进行增量更新。并且无法删除代理的初始化时间和源检索。

要真正加快速度,您需要设置自己的构建服务器。使用在永久SSD上运行的DS Azure VM将为您带来最大的性能优势。使用您自己的VM,您可以执行以下其他操作:

  • 关闭Clean Workspace。这将允许增量源控制提取。
  • 关闭Clean Build。这将允许MsBuild执行增量构建。
  • 在同一台计算机上安装多个代理,并且在同一个虚拟机上并行构建多个配置。
  • 在构建代理上安装TFVC代理(使用TFS 2013版本)以获取本地存储的文件,以防您希望使用干净的工作区进行构建,但可以更快地获取TFVC的源代码。
  • 如果您正在使用Pre / Postbuild事件,请确保它们指定其输入和输出,以便MsBuild推断是否可以跳过目标以进行增量构建。

您可以在强大的开发人员工作站或现有本地服务器上安装本地构建代理,而不是在Azure上托管代理。

还可以应用其他MsBuild提示和技巧来进一步提高MsBuild的性能。你可能会惊讶地发现你可以花多少时间来削减你的构建。