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