首页 文章

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

提问于
浏览
17

我们的团队使用visual studio online Build 了持续集成 . 我们已经尝试将我们的订阅提升到高级,并且我们无法达到付费构建限制 . 但是,构建时间非常慢 .

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

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

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

1 回答

  • 31

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

    • 通过以NuGet包的形式重用以前的结果,减少您构建的项目数量 . 这将要求您将解决方案分解为较小的位并使用Visual Studio Team Services的包管理功能或MyGet等第三方服务 .

    • 并行化您的构建 . 如果您正在构建多个项目或多个配置,则可以使用MultiConfiguration选项来启动多个代理上的多个构建(在这种情况下,您需要分配多个托管代理)
      enter image description here

    • 启用 BuildInParallel 以允许MsBuild启用多个实例并启用 MaxCpuCount=2 以使用托管代理上可用的多个CPU核心 . 它看起来像是在一个A3实例上运行,它可以让你玩4个内核 . 如果您同时使用 BuildInParallelMaxCpuCount ,请不要在 MaxCpuCount 上最大化核心数 .

    • 使用 OutputPath 将所有输出构建到单个目录 .

    • 使用构建任务上的复选框启用并行测试执行 .

    • 尽可能多地调整工作区映射 . 不需要的披风文件夹,仅映射您真正需要的内容 .

    • 跳过你所有的一切't really need for your CI build. You may want to turn off Code Analaysis and run your full test suite only on a nightly build to increase your feedback time, even though you'重新降低你的反馈质量 .

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

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

    • 关闭Clean Workspace . 这将允许增量源控制提取 .

    • 关闭Clean Build . 这将允许MsBuild执行增量构建 .

    • 在同一台计算机上安装多个代理,并且在同一个VM上并行构建多个配置 .

    • 在构建代理上安装TFVC代理(使用TFS 2013版本)以获取本地存储的文件,以防您希望使用干净的工作区进行构建,但可以利用更快的TFVC源检索 .

    • 如果您正在使用Pre / Postbuild事件,请确保它们指定其输入和输出,以便MsBuild推断是否可以跳过目标以进行增量构建 .

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

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

相关问题