"构建服务器"有什么意义?

Kin*_*tor 99 agile continuous-integration build-process build-server

我没有为非常大的组织工作,我从来没有为一家拥有"构建服务器"的公司工作过.

他们的目的是什么?为什么开发人员不在本地计算机上构建项目,或者是他们?有些项目是否如此之大,以至于需要更强大的机器才能在合理的时间内构建它?

我看到构建服务器有用的唯一地方是与构建服务器持续集成,不断构建提交到存储库的内容.是不是我还没有做过足够大的项目?

有人,请赐教:构建服务器的目的是什么?

mkb*_*mkb 93

给出的理由实际上是一个巨大的好处.转向QA的构建应该只来自仅从存储库构建的系统.这种方式构建包是可重现和可追踪的.除了自己的测试之外,开发人员手动构建代码是危险的.太多的东西没有被检查,与其他人的变化等等过时的风险等.

Joel Spolsky就此事.

  • 当开发人员正在构建针对前沿库,没有实现它,然后在测试期间到处都出现"NoClassDefFound"错误并且其他人都想知道到底出了什么问题时,事情变得特别毛茸茸.(这在我的基于Java的工作中存在问题,直到我建立Hudson并且我们将QA构建移动到那个) (7认同)

Kel*_*nch 44

构建服务器很重要,原因有几个.

  • 他们隔离了环境本地Code Monkey开发人员说"它在我的机器上编译",当它不能在你的机器上编译时.这可能意味着不同步签入,或者可能意味着缺少依赖库.Jar地狱并不像.dll地狱那么糟糕; 无论哪种方式,使用构建服务器是廉价的保险,您的构建不会神秘地失败或错误地打包错误的库.

  • 他们专注于与构建相关的任务.这包括更新构建标记,创建任何分发包,运行自动化测试,创建和分发构建报告.自动化是关键.

  • 他们协调(分布式)开发.标准情况是多个开发人员正在使用相同的代码库.版本控制系统是这种分布式开发的核心,但是根据工具的不同,开发人员可能不会相互交互很多代码.而不是强迫开发人员冒险构建错误或担心过度积极地合并代码,而是设计构建过程,其中自动构建可以看到适当的代码并以可预测的方式处理构建工件.这样,当开发人员提交有问题的东西时,比如不检查新的文件依赖关系,就可以快速通知他们.在分段区域中执行此操作,让您标记已构建的代码,以便开发人员不会提取会破坏其本地构建的代码.PVCS使用推广小组的想法很好地做到了这一点.Clearcase也可以使用标签来做,但需要比许多商店提供的更多的流程管理.

  • +1让程序员记录他们的构建环境的变化就像放牧猫一样.他们根本无法记住他们在什么阶段更新了他们的.Net或Boost lib,如果他们意识到他们已经完成了它.让一个中央服务器进行日常构建会在他们检查代码后的那个晚上抓住他们 - 并且没有什么比被告知的那样激励,"你打破了团队建设,你忘记了什么?" (12认同)

pet*_*hen 26

他们的目的是什么?
负载开发人员计算机,为构建提供稳定,可重现的环境.

为什么开发人员不在本地计算机上构建项目,或者是他们?
因为使用复杂的软件,只需"编译"就可以解决很多问题.我遇到的问题:

  • 不完整的依赖性检查不同种类,导致二进制文件没有更新.
  • 发布命令以静默方式失败,忽略日志中的错误消息.
  • 构建包括尚未进行源代码控制的本地资源(幸运的是,还没有"该死的客户"消息框......).
  • 当试图通过从另一个文件夹构建来避免上述问题时,从错误的文件夹中挑选了一些文件.
  • 聚合二进制文件的目标文件夹包含其他陈旧的开发人员文件,这些文件不应包含在发行版中

我们已经获得了惊人的稳定性增长,因为所有公开发布都是从源代码控制到一个空文件夹开始的.以前,有很多"有趣的问题","当乔给我一个新的DLL时,它就消失了".

有些项目是否如此之大,以至于需要更强大的机器才能在合理的时间内构建它?

什么是"合理的"?如果我在本地计算机上运行批量构建,那么有很多事情我不能做.而不是向开发人员付费以完成构建,而是付IT以购买真正的构建机器.

是不是我还没有做过足够大的项目?

尺寸肯定是一个因素,但不是唯一的因素.


Ric*_*ler 7

构建服务器是Continuous Integration服务器的独特概念.存在CI服务器以在进行更改时构建项目.相比之下,存在构建服务器以在干净的环境中构建项目(通常是针对标记修订的发布).它确保没有开发人员破解,调整,未经批准的配置/工件版本或未提交的代码使其成为已发布的代码.


kem*_*002 5

生成服务器用于签入每个人的代码。您的代码可以在本地编译,但是您很可能不会一直由其他人进行所有更改。


And*_*nea 5

补充已经说过的内容:

一位前同事在 Microsoft Office 团队工作,告诉我一个完整的构建有时需要 9 个小时。在你的机器上这样做会很糟糕,不是吗?