是否有已知的解决方案可以跨网络机器拆分构建过程?
用例:
我们是一家普通的软件开发公司。我们拥有大约 50 个开发工作站(四核 2.66Ghz、4 GB RAM、200 GB RAID)。无需多言,并不是每台机器都处于满负荷状态。
任何时候都有 5 到 15 个项目同时运行。显然,所有项目都在服务器上连续构建,然后部署到适当的环境中。单个项目构建需要 3 到 15 分钟。
问题:每当我们连续构建 5 个项目时,最后一个项目将在大约 25 - 50 分钟后准备就绪。并行构建并不能解决问题(构建只是游戏的一部分,然后您需要部署、运行测试等)。
是的,正确的解决方案是添加另一个构建服务器,但是“这需要购买新的昂贵硬件,而我们已经花了很多钱!”。是的,对(该死的)!
反正。关于什么在开发人员工作站之间拆分构建?假设每当我们需要构建项目“A”时,我们都会检查 5 个工作站,并在所有未超载的工作站上开始构建。如果开发人员确实需要他机器的所有功能,只要至少有 1 台机器仍在构建,他就可以取消构建。构建完成后,可以部署到适当的环境(托管在某个服务器上,而不是工作站上 :))。公司越大,这对我来说就越有意义。
有人尝试过这样的事情吗?有什么好的做法吗?有什么有用的软件吗?
(90% 的项目是.net C#, 平台 -视窗)
答案1
通常,切换到分布式构建环境意味着更改构建链,因为您不想在开发和生产中使用不同的编译器。
你提到游戏让我假设你使用 VS 并使用 Windows,但我将提供一些一般性建议
- 迪斯特马克http://distmake.sourceforge.net
- 分布式http://code.google.com/p/distcc/
- IncrediBuildhttp://www.xoreax.com/
- 电云http://www.electric-cloud.com/
我知道还有许多其他解决方案(这里列出了更多http://wiki.gridengine.info/wiki/index.php/Distributed-Compilation),但如果不更多地了解您的环境和要求,很难给您提供更好的建议,只能查看各种系统,看看它们如何适合您当前的环境并选择一个。
顺便说一句,当您的公司有 50 名开发人员时,您的公司可能已经达到了创建分布式构建环境的规模,其动机仅仅是提高开发人员的生产力。管理层通常不喜欢开发人员在等待构建服务器时偷懒…… ;)