购买机器进行持续集成-关键因素是什么?
我打算向我的(非常小的)公司建议,我们购买一台计算机来进行持续集成。如果他们回答"是",那么实际购买机器的任务可能就落在我身上,所以我的问题是:
我要在一台用于很小的(3人)php团队进行持续集成的计算机中寻找什么?
哪些"东西"(内存,处理器等)很重要,哪些不重要?
解决方案
除非应用程序很大,否则我只会得到一个双核盒子,里面装有大约4 Gb的RAM和可能在RAID 0中设置了2个相当快的SATA磁盘。也许有500 Gigs?
如果要真正安全使用它,请为OS分区的RAID 0获得两个70ish gig的驱动器,然后为RAID 5获得3 140+ gig的驱动器作为数据。
我们实际上并不需要那种功能强大的机器。如果我们正在运行测试或者其他指标,则处理能力可能是首要考虑因素,但实际上我们可以在旧的奔腾1上运行它,并且可能会起作用。
约束将成为操作环境。如果我们正在运行LAMP,则希望使用一台可以很好地处理LAMP设置的机器,这几乎是任何相当现代的* nix机器。
我在一个旧的奔腾4工作站上为.NET设置了一个持续集成设置,它处理得很好。
要记住的一件事是,如果要在构建中归档代码,则需要存储空间。
根据我的经验,这不必一定是强力机器。我们将用于开发的任何机器都将令人满意。显然,如果我们在代码提交上运行单元测试,则计算机速度越快,响应速度就越快。我们的CI服务器正在运行XP SP2、3G处理器,3G RAM,并且现在已经可以满足我们的需求。就是说,在提交后不超过6分钟收到一封电子邮件,这很高兴,它可以让我们知道构建是否干净并且所有测试都通过了。对于每晚进行的构建,规格可能会下降得更多,因为我们可能有更多的时间来完成这些工作。硬盘空间(目前可以合理地达到300G)非常适合存储报告并进行回归构建,但是,如果我们有NAS,则可以在构建工件后将其推下。
当我们使用Maven,Continuum和Clearcase并每小时进行构建时,存储成为我们的问题。每次构建后都会保留快照视图。
我们有一个功能强大的盒子(Sun Fire V490),并将其用于我们的开发集成环境和Archiva存储库。因此,我们从未真正遇到过性能和内存方面的任何问题。实际上,我们唯一一次遇到PermGen内存问题时,它是在构建Maven站点目标,而这仅意味着使用-XX:MaxPermSize = 128m。
机器的性能几乎没有关系,但是要注意可用性,因为一旦开始使用它,并且有一天魔术烟雾消失了,我们就需要尽快更换它以继续工作。定义明智的备份策略,并确保我们知道必要时如何设置新的相同系统。例如,我们可能使它从一个较小的分区运行,可以将其映像到另一台计算机上,然后如果数据的主要部分位于RAID1上并且至少有一个驱动器可以工作,则可以物理移动数据的主要部分(尽管在其他位置有备份)在网络上也是如此)。
我们今天可以购买的任何新机器几乎都可以处理在不太大的源代码树上进行持续集成的任务。要寻找的一些东西:
- 2-4GB的RAM,如果要并行运行许多测试,或者要运行虚拟机来模拟客户端,则需要更多的RAM。
- 多核处理器(或者多个处理器),用于增加捕获线程错误的机会。
- "服务器"类机器比"台式"类机器更倾向于处理24/7操作,但是两者之间并没有明确的界限。
- 必须具有RAID1或者RAID1 + 0冗余磁盘。即使我们有备份(无论如何也应该拥有备份),重建服务器还是很痛苦的,另外多花100美元的硬盘作为保险来说还是物有所值。
我认为这里很多人都在谈论的一件事是,该机器并不像CI软件那么重要。唯一重要的机器是我们是否需要不同的体系结构。否则,请购买一台与目标环境匹配的机器。如果要构建服务器应用程序,则最好使用64位处理器,因为应用程序可能将在64位服务器上运行。
我会更关心我要为CI使用哪种工具。我们需要可以快速运行的东西,正如这里的人们所指出的那样,除非我们需要它们可用,否则不应该保留旧版本。如果是这样,我会寻找可以将构建和结果上传到单独服务器的内容。
RAM:足以运行CI工具(phpUnderControl?)以及我们想要用于构建和测试的任何支持软件。
存储:确定要在计算机上保留多少个旧版本。以我的经验,保留很多尤其是没有用。如果团队较小,没有很多正式流程可以回滚到较早的版本。
CPU:无问题。我们可以购买的任何机器都可以使用。
因此,在这两者之间,我倾向于将RAM优先于存储空间。