65.9K
CodeProject 正在变化。 阅读更多。
Home

IncrediBuild 7.0 评测

starIconstarIconstarIconstarIconstarIcon

5.00/5 (4投票s)

2015年10月14日

CPOL

10分钟阅读

viewsIcon

21679

大型项目往往会在构建和测试执行阶段拖慢反馈周期。IncrediBuild 的新版本 7 旨在通过提供一个高度可配置、易于使用的构建分发和加速系统来帮助团队缓解这个问题。

引言

无论软件开发团队使用何种平台或方法,快速反馈周期都至关重要。快速反馈可确保您快速发现构建失败(无论是本地还是服务器上)和测试失败的情况。

大型项目往往会在其构建和测试执行阶段减慢反馈周期。IncrediBuild 的新版本 7 旨在通过提供一个高度可配置、易于使用的构建分发和加速系统来帮助团队缓解这个问题。

IncrediBuild 不仅可以帮助缩短构建/测试周期,还可以处理其他计算密集型过程,例如图像处理、音频编码或其他高吞吐量、多进程执行。IncrediBuild 还可以与常见的构建/CI/CD 系统集成,例如 Team City、Jenkins、Microsoft 的 Team Foundation Server 等。

IncrediBuild 概述

IncrediBuild 通过将任务卸载到本地网络或公共云中具有空闲 CPU 的机器上,帮助团队缓解长时间的处理任务。一个主协调器负责协调客户端池中的任务,并且可以配置一个可选的备份协调器来处理自动故障转移。构建任务从安装了代理的系统启动——在 IncrediBuild 的术语中称为“发起者”。

一个关键概念是,IncrediBuild 要求您在池系统上安装 IncrediBuild 代理之外的应用程序/工具/软件。

IncrediBuild 虚拟化构建过程,并将工作和资源传递给每个辅助代理。例如,您可以创建六个只安装了 IncrediBuild 代理的系统。这些辅助系统将能够处理从您安装了 Visual Studio 的系统启动的任务处理。这对于团队来说是一个巨大的节省时间的方法——您只需要提供基本系统并安装代理。IncrediBuild 处理其他一切!事实上,您可以在用户正在使用机器的同时使用它们——IncrediBuild 只会在后台使用它们的空闲资源,用户甚至不知道他们的空闲 CPU 正在被用来加速其他发起者机器启动的任务。IncrediBuild 将一台普通工作站扩展为一台“虚拟”高性能机器,可能由数百个您已经拥有的核心和 GB 内存组成。

团队通过在可用系统上安装 IncrediBuild 代理来创建代理池。这些系统可能包括闲置在办公桌下或储藏室中的未使用系统,或者可能是正在使用的系统。第二种情况意味着您正在将 IncrediBuild 的代理安装在共享计算资源(CPU 周期、RAM、磁盘 IO 等)不会对代理系统产生重大影响的系统上。IncrediBuild 还支持基于云的系统,并与 Azure 资源开箱即用集成。

IncrediBuild 支持多种平台

  • Visual Studio:针对 C++/C#/Android 和其他项目类型进行直接集成。对于基本和中等复杂的任务,无需自定义。
  • 带有本地并行任务的 Make 工具:对支持本地并行化的 Make 工具进行开箱即用的加速。
  • 不带并行任务支持的类 Make 工具:通过手动拆分构建任务并调用 IncrediBuild 的提交接口来加速这些类型的构建系统。
  • 游戏行业:IncrediBuild 声称通过利用其工具集对代码和资产(渲染、着色和其他图像/声音处理)的开箱即用支持,将游戏编译时间缩短了 30 倍。
  • 测试、代码分析和其他高吞吐量执行:IncrediBuild 的基础设施提供了卸载和加速任何类型高吞吐量、多进程执行的能力,例如测试、金融模拟、代码分析、打包等。

[注:IncrediBuild 还有适用于 Linux 构建的产品,以及可以集成到您的软件中以利用任务并行化的工具。本次评测不涵盖这些单独的产品。]

安装

获取 IncrediBuild 代理和协调器池轻而易举。一个安装程序可以安装两种配置。首先设置您的主协调器,然后根据需要添加代理和备份协调器。安装代理时,您将它“订阅”到协调器,协调器将其注册到池中。

您需要处理系统之间的通信问题。IncrediBuild 使用几个不同的端口来协调池中的工作。这意味着您需要处理本地和网络防火墙规则,以确保您有适当的端口访问——如果您使用 Amazon Web Services 或 Azure 等场外资源,这一点尤为关键。幸运的是,IncrediBuild 的安装程序会提示您进行本地防火墙配置,并且还提供了一个“测试连接”功能来验证与协调器的通信。

我对安装过程唯一的不满是 IncrediBuild 在首次加载许可证文件时需要活跃的互联网连接。这意味着如果您碰巧离线,例如在偏远的度假地点,或者在 34,000 英尺的无 Wi-Fi 航班上,您将无法配置协调器和池代理。问我是怎么知道的……

然而,IncrediBuild 的工作人员确实有一个解决方案:可以通过向他们单独请求获得离线许可证。这对于像我这样受影响的少数人来说是一个巨大的帮助!

在 VS 中工作

在 Visual Studio 中工作需要您在工作站上安装代理。您需要选择安装程序的选项,将 DevTools 集成到您的 Visual Studio 实例中。该安装程序与我的 VS 2012、2013 和 2015 实例无缝衔接。(IncrediBuild 支持更早的 VS 版本,但我没有使用它们。)

从您的 VS 实例启动任务很简单。您会找到一个包含所有常规构建操作的新菜单。请注意,IncrediBuild 甚至支持使用分布式代理进行调试!

启动 IncrediBuild 构建会将您的构建任务拆分为多个操作系统级别的任务。池协调器会将这些任务分配给各个代理以并行运行它们。常规 .NET 或 C++ 解决方案中的任务可能包括编译单个文件、解析依赖项、构建和链接单个项目等。

[注:IncrediBuild 的用户指南提供了关于这如何发生的精彩文档。阅读他们的手册以获得适当的理解水平是绝对值得的。]

如下所示,IncrediBuild 在 Visual Studio 中的监视器窗口是一个很棒的图表,显示了任务如何在池中的各个代理之间分配。我的初步印象是什么?有点像:“感谢上帝,我不需要对这些进程的拆分进行任何配置!”

横向扩展以实现更快的构建

请记住,构建过程应该尽快给您反馈。您希望在构建、测试和资产编译方面获得绿灯的延迟最小。如果您的构建花费时间太长,您需要通过简化构建或向池中添加其他代理来缩短时间。

添加本地网络代理

如上所述,添加额外的代理非常简单。安装程序快速而简单。IncrediBuild 更进一步:他们让您能够创建“免干预”的静默安装程序包。再次运行单个安装程序应用程序,选择“静默安装”选项,您将得到指导来配置一个适合快速推送到云或虚拟化代理系统的免干预安装程序。这使得横向扩展成为一个极其简单、快速的操作。

使用 Azure

IncrediBuild 提供了在公共云中横向扩展的简单选项。再一次,这对我来说是一个巨大的胜利,因为我经常需要在管理交付管道的同时,你知道的,真正为客户交付价值。

您可以直接利用 IncrediBuild 对 Azure 的支持。您可以使用两种模型将 Azure 资源引入您的池中

  • 纯净:所有代理您的控制器都位于 Azure 中
  • 混合:一些代理和/或您的控制器在 Azure 中,一些在您自己的网络中

混合模式要求您的网络和 Azure 之间具有 VPN 连接。我使用了 Azure 便捷的 VPN 客户端,它需要适量的简单配置。

[注:IncrediBuild 的支持人员向我指出了这个解决方案。我之前没有意识到它的存在。显然,我与他们支持团队的第一次互动非常成功!

纯净模式的 Azure 易如反掌:在 Azure 中配置带有代理和控制器的虚拟机。将代理订阅到控制器,然后启动构建。这与在您的本地网络上完全工作一模一样。]

在高峰期(例如产品发布之前),开发人员更频繁地进行构建和测试,将任务分发到云端尤其有用。您能够以非常灵活、经济高效的方式轻松扩展您的构建,而无需为构建系统管理开销而烦恼。

IncrediBuild 的实践

我花时间在较小的解决方案上使用 IncrediBuild,只是为了熟悉它的功能。然而,小项目并不是 IncrediBuild 最有用的地方。当您有一个复杂的解决方案/项目,其中许多细粒度任务可以移交给代理池时,IncrediBuild 才会大放异彩。想想大量的独立编译、大量的独立依赖树解析。

我想获得一些实质性的东西,所以我找到了 Microsoft 的 Roslyn 编译器,它是开源的,并托管在 GitHub 上。Roslyn 庞大而复杂,所以我知道这可以给 IncrediBuild 一个严峻的考验!

一旦我为 Roslyn 设置好环境,我直接从 Visual Studio 进行的首次构建花费了 599.88 秒,将近十分钟。然后我设置了一个 IncrediBuild 代理池。不幸的是,我只能使用一个额外的双核代理。我本来想使用更大的池;然而,酒店的 Wi-Fi 网络不利于设置复杂的对等网络或 Azure 云访问。

即使只有一个小池,IncrediBuild 也只用了四分四十秒就完成了构建——是仅使用 Visual Studio 构建时间的一半。我多次重复这个练习,得到了相似的结果。当然,您的实际效果(而不是可能)有所不同;然而,您需要关注的是总体收益。

您可以在下面看到 IncrediBuild 如何将任务分配给两个代理的 CPU 核心。

我不敢声称您会看到我所看到的相同时间缩短。但很明显,IncrediBuild 在缩短反馈循环方面做得非常出色。想想通过利用更大的代理池,我们能够以多快的速度执行 Roslyn 测试(一组非常耗时的测试!)

再次,我对我即使在这种受限环境中也能轻松使 IncrediBuild 正常工作印象深刻:安装一个协调器,安装代理并将其订阅到协调器,然后使用 IncrediBuild 菜单从 Visual Studio 内部启动构建。

几分钟即可设置,访问代理池轻松无脑。

调整您的构建

IncrediBuild 另一个备受赞赏的功能是其默认性能设置“就是好用”(我自己的非注册商标短语)。开箱即用,您无需担心调整代理性能。如果您在其他高利用率系统上使用代理,则可以调整处理进程、控制 CPU 利用率等方面的设置。

您还可以在协调器上设置性能/资源优化。您可以设置 CPU 阈值,甚至可以从阈值考虑中排除特定进程。同样,开箱即用的设置很棒——这只是为您在复杂的环境和场景中提供了额外的能力。

最后,还有大量用于卸载本地进程、优化 IO 操作和位置、缓存等的额外选项。这些选项都在文档中详细说明。

总结

IncrediBuild 开箱即用,具有巨大的灵活性和强大功能。我非常感谢 IncrediBuild 团队为使默认配置“就是好用”所付出的辛勤工作。这对于小型团队来说至关重要,因为您需要以最少的麻烦启动交付管道,然后再进行调整。

IncrediBuild 的定价很简单:您按代理付费(每个池中的机器一个代理),价格基于每个代理的核心数。四核代理的价格从 395 美元起,最高可达 64 核代理的 1,495 美元。批量折扣从五个代理开始提供。(有关 IncrediBuild 网站的更多详细信息或联系 IncrediBuild 销售

快速反馈周期对于稳健的软件交付链至关重要。维护交付管道周围工具的便利性也至关重要。IncrediBuild 是一个非常强大的补充,我鼓励团队评估将其添加到他们的环境中。它启动和运行非常简单,并且有可能极大地影响您处理复杂解决方案的方式!

立即试用 IncrediBuild 的 FreeDev 版本(免费)。

© . All rights reserved.