-->

什么是“生成服务器”的地步? [关闭](What is the point of a “Buil

2019-06-25 10:57发布

我没有工作了非常大的组织,我从来没有工作过的公司,有一个“生成服务器”。

什么是他们的目的是什么? 为什么不建立在本地计算机上项目的开发者,或者是他们? 有一些项目如此之大,更强大的机器被建造起来的合理时间内需要的?

我看到一个构建服务器是有用的唯一的地方是与构建服务器一直在打造什么是提交到库持续集成。 难道我刚才没有工作的足够大的项目?

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

Answer 1:

给出的理由居然是一个巨大的好处。 构建是去QA应该永远只来自那些只构建从资源库中的系统。 通过这种方式建立包是重复和可追溯。 开发人员手动构建代码,除了自己的测试什么是危险的。 东西太多风险没有得到检查中,被淘汰的日期与其他人的变化,等等等等。

乔尔斯波斯基在这个问题上。



Answer 2:

构建服务器是很重要的有以下几个原因。

  • 他们隔离环境的本地代码猴子开发商说:“它编译我的机器上”时,它会不会对你的编译。 这可能意味着出不同步检查插件或者可能意味着依赖库丢失。 罐子到底是不是就近的.dll地狱一样糟糕; 无论哪种方式,使用构建服务器是您的构建将不神秘的失败或错误地打包了错误的库廉价的保险。

  • 他们注重与构建相关的任务。 这包括更新构建标签,创建任何分配包装,运行自动化测试,创建和分发构建报告。 自动化是关键。

  • 他们协调(分布式)的发展。 标准的情况是,其中多个开发者在相同的代码库的工作。 版本控制系统是这种分布式开发的心脏,但依赖于工具,开发人员可以不与对方的代码更互动。 相反,迫使开发商冒险坏建立或担心合并代码过于积极,设计构建的过程,其中自动构建可以看到适当的代码,并在可预见的方式处理生成工件。 当开发者提交的东西有问题,就像在一个新的文件相关不检查这样的话,他们可以迅速得到通知。 分阶段的区域这样做让你标志,已建成这样开发人员就拉不代码会破坏当地的编译代码。 PVCS这样做是使用相当不错的推广组的想法。 ClearCase的可以做到这一点使用标签,但将需要更多的流程管理不是很多商店关心提供。



Answer 3:

什么是他们的目的是什么?
以开发机的负载,提供稳定,可重复的环境的基础之上。

为什么不建立在本地计算机上项目的开发者,或者是他们?
由于复杂的软件,令人惊讶的很多事情都可能出错的时候只是“编译通过”。 问题其实我也遇到过:

  • 不同种类的不完全的相关性检查,导致二进制文件不能被更新。
  • 发布命令失败默默,忽略日志中的错误消息。
  • 建立包括本地源尚未致力于为源代码控制(幸运的是,没有“该死的客户”的消息框,但..)。
  • 当试图通过从另一个文件夹建设,以避免上述问题,一些文件从错误的文件夹采摘。
  • 其中二进制聚集目标文件夹中包含shoulkd不包括在发行额外陈旧开发文件

因为所有的公开版本从源头控制沾到一个空文件夹开始,我们已经有了一个惊人的稳定增长。 之前,有很多的说:“走了,当乔给了我一个新的DLL”“滑稽的问题”。

有一些项目如此之大,更强大的机器被建造起来的合理时间内需要的?

什么是“合理”? 如果我在我的本地机器上运行一个批处理构建,有很多事情我不能做。 而不支付开发人员构建完成,支付IT已经买了一张真正构建机器。

难道我刚才没有工作的足够大的项目?

尺寸当然是一个因素,但不是唯一的一个。



Answer 4:

构建服务器是一个独特的概念,一个持续集成服务器。 CI服务器的存在是为了建立自己的项目时更改。 相比之下构建服务器存在建立在一个干净的环境项目(通常释放,对一个标记修订)。 它确保没有开发商黑客,调整,未经批准的配置/工件版本或未提交的代码使得到发布的代码。



Answer 5:

构建服务器时使用它进行检查,以建立每个人的代码,你的代码可能会在本地编译,但你很可能不会有被其他人所有的时间所做的一切变化。



Answer 6:

我的答案同意关于稳定性,tracability和重现性至今。 (批号的“,两者均的,对吧?)。 只有工作过的大公司(医疗保健,金融)与许多构建服务器,我想补充一点,这也是安全问题。 曾经看过电影办公空间? 如果一个不满的开发者建立自己的本地计算机上的银行应用程序并没有其他人看它或测试中,它......咚。 超人III。



Answer 7:

这是必要的,以确保构建和测试工作,并且不依赖于文物有空闲以前的版本(和配置更改)的文物的“干净”的环境。 隔离的有效方法是创建一个单独的构建服务器。



Answer 8:

这些机器使用有以下几个原因,所有的努力帮助您提供卓越的产品。

一种用途是模拟典型的端用户配置。 该产品可能会在您的计算机上工作,与所有的开发工具和设置存储库,但最终用户很可能不会有相同的配置你。 对于这个问题,其他开发商会不会有完全相同的设置为你要么。 如果您在代码中有一个硬编码路径的地方,它可能会你的机器上工作,但是当开发萨尔瓦多O'per尝试构建相同的代码,它不会工作。

此外,他们可以用来监测谁最后爆发的产物,用什么更新,以及该产品在退步。 每当新的代码检查中,构建服务器构建它,如果失败,其明确的,什么是错,谁犯最后用户有过错。



Answer 9:

要添加什么已经说过:

一位前同事曾在Microsoft Office团队,并告诉我一个完整的构建有时花了9小时。 这将吸做你的机器上,不是吗?



Answer 10:

对于稳定的质量,并获得了建设“关你的机器”到现场环境错误,并让你忘记检查到源代码控制的文件也显示为构建错误。

我还用它来创建安装程序,因为这些花费了大量的时间在桌面上做的代码签名等。



Answer 11:

我们用一个让我们知道,生产/测试盒具有相同的库和安装为什么是可用的生成服务器上这些库的版本。



Answer 12:

这是关于管理和检测我们。 随着构建服务器,我们总是知道我们可以建立我们的主要的“主干”从版本控制线。 我们可以创建一个主安装带有一键并将其发布到网上。 我们可以运行所有的单元测试每次检查代码中,以确保它的工作原理。 通过收集所有这些任务到一台机器它可以更容易得到它向右反复。



Answer 13:

你是正确的,开发人员可以构建自己的电脑上。

但这些都是一些我们构建服务器买我们的东西,我们几乎没有复杂的构建厂商:

  • 版本控制问题(一些已经在前面的反应已经提到)
  • 效率。 开发者不必停下来让本地版本。 他们可以踢它关闭的服务器上,并获得到下一个任务。 如果版本是很大,那么这就是开发的机器没有占用更多的时间。 对于那些做持续集成和自动化测试,甚至更好。
  • 集权。 我们的构建机器有脚本,以便生成,分发到UAT环境,甚至生产分期。 让他们在一个地方减少它们保持同步的麻烦。
  • 安全。 我们没有做太多特别的在这里,但我敢肯定,一个系统管理员可以把它使得生产迁移工具只能通过某些授权的实体构建的服务器上进行访问。


Answer 14:

也许我是唯一一个...

我认为每个人都同意,一要

  • 使用文件库
  • 从做库构建(及在清洁的环境中)
  • 使用连续测试服务器(如巡航控制),看看是否有什么是你的后“修复”破损

但是,没有人在乎自动构建版本。 当一些在自动构建被打破,但它不是了 - 谁在乎呢? 这是一项正在进行的工作。 有人固定它。

当你想要做一个发布版本,您从仓库构建。 我敢肯定,你要在服务器做它的工作标记当时与存储库的版本不是每六个小时。

所以,也许是一个“构建服务器”只是用词不当,它实际上是一个“连续测试服务器”。 否则,它听起来几乎无用。



Answer 15:

构建服务器让你一种你的代码的第二个观点。 当你检查它,代码检查。 如果一切正常,代码有一个最起码的质量。



Answer 16:

此外,请记住,低层次的语言需要更长的时间来编译比高级语言。 人们很容易想到“好好看看,我的.NET项目在几秒钟编译!有什么大不了的?” 一段时间回来,我不得不乱用一些C代码,我已经忘记了它需要多少时间进行编译。



Answer 17:

构建服务器用于调度编制任务(例如每晚构建)位于库中,有时可能需要超过两小时以上,通常大项目。



Answer 18:

构建服务器还为您提供了托管的基础,能够捕捉所需的所有零件在其他人可能有权取得所有权的情况下重现构建。



文章来源: What is the point of a “Build Server”? [closed]