Answers:
给出的原因实际上是巨大的好处。进行质量检查的构建只能来自仅从存储库构建的系统。这样,构建包是可复制和可追溯的。开发人员为自己的测试以外的任何内容手动构建代码很危险。东西没有被检入,与他人的更改过时等的太多风险。
构建服务器之所以重要,有几个原因。
他们隔离环境当地的Code Monkey开发人员说“它在我的计算机上编译”,而不会在您的计算机上编译。这可能意味着不同步签入,或者可能意味着缺少依赖库。Jar地狱不如.dll地狱那么糟糕;无论哪种方式,使用构建服务器都是便宜的保险,因为您的构建不会神秘地失败或错误地打包错误的库。
他们专注于与构建相关的任务。这包括更新构建标记,创建任何分发包,运行自动化测试,创建和分发构建报告。自动化是关键。
他们协调(分布式)开发。标准情况是多个开发人员在同一个代码库上工作。版本控制系统是这种分布式开发的核心,但是根据工具的不同,开发人员之间的交互可能不会太多。与其强迫开发人员冒着糟糕的构建风险或担心过度激进地合并代码,不如设计构建过程,使自动构建可以看到适当的代码并以可预测的方式处理构建工件。这样,当开发人员提交有问题的内容(例如不签入新文件依赖项)时,可以迅速收到通知。在暂存区域中执行此操作,让您标记已构建的代码,以使开发人员不会提取会破坏其本地构建的代码。PVCS使用晋升小组的想法做得很好。Clearcase也可以使用标签来做到这一点,但是与许多商店所关心的相比,Clearcase需要更多的过程管理。
他们的目的是什么?
承担开发人员机器的负担,为构建提供稳定,可复制的环境。
开发人员为什么不在本地计算机上构建项目呢?
因为使用复杂的软件,令人惊讶的是,仅当“编译通过”时,许多事情都会出错。我实际遇到的问题:
由于所有公共发行版都从从源代码管理到空文件夹的获取开始,所以我们的稳定性有了惊人的提高。以前,有很多“有趣的问题”,“当乔给我一个新的DLL时就消失了”。
是否有一些项目如此之大,以至于需要更强大的机器来在合理的时间内构建它?
什么是“合理”?如果我在本地计算机上运行批处理构建,则很多事情我做不到。与其付钱给开发人员完成构建,不如付钱给IT购买真正的构建机器。
我只是还没有从事足够大的项目吗?
大小当然是一个因素,但不是唯一的因素。
生成服务器用于签入每个人的代码。您的代码可以在本地编译,但是您很可能不会一直由其他人进行所有更改。
要补充已经说过的话:
一位前同事在Microsoft Office团队工作,并告诉我完整的构建有时需要9个小时。在您的机器上完成该操作很麻烦,不是吗?
我同意到目前为止有关稳定性,可跟踪性和可复制性的答案。(很多“实体”,对吧?)。仅使用大型构建服务器为大型公司(卫生保健,金融)工作过,我还要补充一点,这也与安全性有关。看过电影《办公空间》吗?如果心怀不满的开发人员在其本地计算机上构建银行业务应用程序,而没有人看着它或对其进行测试……BOOM。超人III。
开发人员可以在自己的计算机上构建是正确的。
但是这些是我们的构建服务器购买给我们的东西,我们几乎不是老练的构建制造商:
另外,请记住,与高级语言相比,低级语言的编译时间要长得多。很容易想到“好吧,我的.Net项目在几秒钟内即可编译!有什么大不了的?” 前一段时间,我不得不弄乱一些C代码,而我忘记了编译需要花费多长时间。
构建服务器还为您提供了托管的基础,在其他人可能拥有所有权的情况下,它能够捕获复制构建所必需的所有部分。