正如丹尼尔已经提到,这取决于,但一般来说,如果你代理是做普通的版本,然后有多个代理将允许你运行多个构建并行。这样做时,IO和内存限制可能会在您的构建服务器上导致问题,特定的反病毒产品也可能会造成问题。
如果您构建的服务器配备了快速本地存储(对于构建工作区,虚拟机的物理SSD或物理驱动器优先于SAN存储)并且分配了足够的CPU内核,因此可以运行相当很少有并行的构建。
如果配置的MSBuild和团队建设都可以传播构建多个解决方案,项目和/或配置在多个代理,才能建立您的解决方案的时候造成巨大的改进的负载。 (只要硬件能够跟上这一点)。
旁白:按照同样的思路,当你的硬件跟不上,具有不同服务器上的多个代理,您可以将构建横向扩展(VS规模达)对这些多个代理,降低了整体的构建这样的时间。
尤其是当你有一个CI构建配置您的构建超过几分钟的时间较长,这是对开发团队有利于有多个代理,其建立在并行运行的方式和所有开发商获得他们的反馈更快。如果你只有一个构建代理,它会导致你的开发人员不得不等待对方完成。
确实有一些情况下,多个代理对你没有任何好处。这些通常是特例:
- 您的构建代理兼作“部署代理”,运行将您的产品安装到服务器本身的脚本。在实验室管理环境中,这些代理很常见。
- 您的构建定义需要读取或写入共享资源(例如,通用固定文件目录)。多个代理会争夺这一点,并可能导致破解构建的文件锁定。
- 您的服务器一般资源不足(内存或磁盘IO),并且无法同时处理多个构建版本。
- 您的网络带宽非常低,在下载源文件或将生成结果保存到服务器或文件共享时,并行运行多个版本可能会导致超时和其他问题。大多数这些项目可以通过更多的内存,本地存储或更多带宽来解决,并且限制代理的数量可能只是暂时的。
- 当你只有一个构建定义,它是一个门控构建。在这种情况下,Team Build将始终按顺序运行构建。如果您有多个具有不同工作区配置的门控版本,那么拥有多个代理是有益的。
感谢您的回答,我想我会简单地给它一个像你提出的建议,并比较两个配置的结果。 –