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

RBZ*_*RBZ 24 tfs continuous-integration tfsbuild azure-devops

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

构建将在队列中停留几分钟,然后花费几分钟来运行[甚至在测试将Nuget包添加到源代码控制时].

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

我认为在Azure VM上接受或设置我们自己的持续集成服务器是最糟糕的情况.

jes*_*ing 37

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

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

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

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

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

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

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