Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Continuous integration “a”的意义是什么;构建服务器";?_Continuous Integration_Build Process_Agile_Build Server - Fatal编程技术网

Continuous integration “a”的意义是什么;构建服务器";?

Continuous integration “a”的意义是什么;构建服务器";?,continuous-integration,build-process,agile,build-server,Continuous Integration,Build Process,Agile,Build Server,我从未为大型组织工作过,也从未为拥有“构建服务器”的公司工作过 他们的目的是什么?为什么开发人员不在本地机器上构建项目,或者是在本地机器上?是否有些项目太大,需要更强大的机器才能在合理的时间内完成 我认为构建服务器唯一有用的地方是与构建服务器持续集成,不断构建提交到存储库的内容。是因为我没有参与足够大的项目吗 有人,请告诉我:构建服务器的用途是什么?我们使用构建服务器,以便我们知道生产/测试盒安装的库和版本与构建服务器上可用的库和版本相同 构建服务器用于在签入时构建每个人的代码。您的代码可以在本

我从未为大型组织工作过,也从未为拥有“构建服务器”的公司工作过

他们的目的是什么?为什么开发人员不在本地机器上构建项目,或者是在本地机器上?是否有些项目太大,需要更强大的机器才能在合理的时间内完成

我认为构建服务器唯一有用的地方是与构建服务器持续集成,不断构建提交到存储库的内容。是因为我没有参与足够大的项目吗


有人,请告诉我:构建服务器的用途是什么?

我们使用构建服务器,以便我们知道生产/测试盒安装的库和版本与构建服务器上可用的库和版本相同

构建服务器用于在签入时构建每个人的代码。您的代码可以在本地编译,但您很可能不会一直有其他人所做的所有更改

以获得一致的质量,并使生成“脱离您的计算机”以发现环境错误,从而使您忘记签入源代码管理的任何文件也显示为生成错误


我还使用它来创建安装程序,因为在桌面上进行代码签名等操作需要花费大量时间。

给出的理由实际上是一个巨大的好处。转到QA的构建应该只来自仅从存储库构建的系统。这样,构建包是可复制和可跟踪的。除了自己的测试之外,开发人员手工构建代码是危险的。太多的东西没有被登记,被其他人的变化等过时的风险


这是关于我们的管理和测试。有了构建服务器,我们总是知道可以从版本控制构建我们的主“主干”线路。我们可以通过单击创建主安装并将其发布到web。每次签入代码时,我们都可以运行所有的单元测试,以确保代码正常工作。通过将所有这些任务收集到一台机器中,可以更容易地重复执行正确的任务。

构建服务器可以让您对代码有第二种看法。当您签入时,代码被签入。如果有效,代码的质量最低。

必须有一个“干净”的环境,没有以前版本的工件(和配置更改),以确保构建和测试工作正常,并且不依赖工件。隔离的一种有效方法是创建一个单独的生成服务器。

生成服务器是一个与持续集成服务器不同的概念。CI服务器的存在是为了在进行更改时生成项目。相比之下,构建服务器的存在是为了在干净的环境中构建项目(通常是一个版本,针对标记的修订版)。它确保没有开发人员的黑客攻击、调整、未经批准的配置/工件版本或未提交的代码进入发布的代码。

这些机器的使用有几个原因,所有这些都是为了帮助您提供更好的产品

一种用途是模拟典型的最终用户配置。该产品可能在您的计算机上运行,并设置了所有的开发工具和库,但最终用户很可能不会拥有与您相同的配置。因此,其他开发人员也不会有与您完全相同的设置。如果您的代码中有硬编码路径,它可能会在您的机器上工作,但当Dev El O'per尝试构建相同的代码时,它将不起作用


此外,它们还可用于监控谁最后一次破坏了产品、更新了什么以及产品在何处退化。无论何时签入新代码,构建服务器都会构建它,如果它失败,那么很明显是出了问题,最后犯下错误的用户是错误的。

我同意到目前为止关于稳定性、可跟踪性和可复制性的答案。(有很多“城市”,对吧?)。我只为拥有许多构建服务器的大公司(医疗、金融)工作过,我想补充一点,这也是关于安全的。看过电影《办公室》吗?如果一个不满的开发人员在他的本地机器上构建了一个银行应用程序,而没有其他人查看或测试它。。。繁荣超人III.

此外,请记住,低级语言的编译时间要比高级语言长得多。很容易想到“好吧,看,我的.Net项目在几秒钟内就可以编译了!有什么大不了的?”有一段时间,我不得不处理一些C代码,我忘记了编译需要多长时间。

开发人员可以在自己的机器上构建,你说得对

但这些是构建服务器为我们购买的一些东西,我们很难成为成熟的构建制造商:

  • 版本控制问题(一些已在先前的答复中提到)
  • 效率。开发者不必停下来在本地进行构建。他们可以在服务器上启动它并开始下一个任务。如果构建很大,那么开发人员的机器就没有占用更多的时间。对于那些进行持续集成和自动化测试的人来说,甚至更好
  • 中央集权。我们的构建机器有一些脚本,可以生成、分发到UAT环境,甚至到生产阶段。将它们保持在一个位置可以减少保持同步的麻烦
  • 安全。我们在这里并没有做什么特别的事情,但我相信系统管理员可以做到,生产迁移工具只能由某些授权实体在构建服务器上访问

    • 也许我是唯一一个

      我想大家都同意应该这样做

      • 使用文件存储库
      • 从存储库进行构建(并在干净的环境中)
      • 使用连续测试服务器(如巡航控制)查看“修复”后是否有任何故障
      但是没有人关心自动构建的版本。 当一些东西在自动构建中被破坏,但它不再是了——谁在乎呢?