首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在哪一点上,连续集成服务器感兴趣?

在哪一点上,连续集成服务器感兴趣?
EN

Software Engineering用户
提问于 2011-11-23 04:21:16
回答 4查看 849关注 0票数 9

我一直在读一些关于像Jenkins这样的CI服务器的文章,我想知道:在什么时候它是有用的呢?

因为对于一个只有5个类和10个单元测试的小项目来说,没有真正的需求。

在这里,我们有大约1500个单元测试,它们在大约90秒内通过(在旧的Core 2双工作站上)(因为它们真的在测试“单元”,因此非常快)。我们的规则是,当测试失败时,我们不能提交代码。

因此,每个开发人员都会启动所有的测试,以防止出现倒退。

显然,因为所有的开发人员都会启动所有的测试,所以一旦一个开发人员对另一个开发人员进行更改(如果有的话),我们就会发现由于相互冲突的更改而导致的错误。

我仍然不太清楚:我应该设置像Jenkins这样的CI服务器吗?它会带来什么?

它只是对速度增益有用吗?(在我们的情况下不是问题)

它有用吗?因为旧的构建可以重新创建吗?(但我们可以用变化莫测的方法来处理这件事,检查一下旧的转速)

基本上,我理解这可能是有用的,但我不知道确切的原因。

任何考虑到我上述各点的解释都将是非常欢迎的。

EN

回答 4

Software Engineering用户

回答已采纳

发布于 2011-11-23 05:12:26

它只是对速度增益有用吗?(在我们的情况下不是问题)

任何花在循环过程中的时间都是你可能花在开发流程中的时间。

你也会节省时间的里程碑,因为你理想的是构建完整的打包和准备就绪的比特,可以直接刻录到CD,上传到网络等。

它有用吗?因为旧的构建可以重新创建吗?(但我们可以用变化莫测的方法来处理这件事,检查一下旧的转速)

不,你不能重建建筑。您可以使用它创建的构建,并将其保留到保留设置抛出为止。

您可以在build服务器上构建它,而不是在某些Dev的机器上构建它。

在这里,我们有大约1500个单元测试,它们在大约90秒内通过(在旧的Core 2双工作站上)(因为它们真的在测试“单元”,因此非常快)。我们的规则是,当测试失败时,我们不能提交代码。

此外,您不希望能够在代码上运行自动化集成或端到端测试,并捕捉单元测试无法捕捉的问题吗?

您可能不希望在开发框上运行这些程序,因为设置和维护该环境将是一件痛苦的事情。集成测试的执行速度也很慢。

到什么时候才有用呢?

和其他投资一样,这也是一项投资。

使用它一次,你可能会出现在后面,或只达到收支平衡。在多个项目中使用它,您可能会领先。

这还取决于您所做的应用程序的类型。

如果您制作的web应用程序需要部署到Java应用服务器(或IIS )上,那么CI就成为一个无需考虑的问题。如果将数据库作为项目的一部分,则相同。手动执行部署是痛苦的,您的QA团队(如果您有)在某一时刻每天都需要它。

此外,您可能希望了解您的需求和问题如何与的12步改进代码保持一致。特别是2,3和10 (虽然它们都很有趣和重要)。

票数 9
EN

Software Engineering用户

发布于 2011-11-23 08:01:25

到什么时候才有用呢?

  • 您的build+test周期超过几分钟。使用5分钟的测试运行,您将不再希望自己运行所有的测试,特别是对于小的更改。
  • 开始构建多个变体。如果您有几个客户具有不同的自定义,那么您应该针对每个变体运行测试,这样工作量就会开始快速增长。而不是在开发人员机器上运行一个变体的测试套件,而让CI在其余的机器上运行它。
  • 您编写的自动化集成测试需要一些重要的测试环境设置。而不是针对一个规范的测试环境进行测试,因为由于开发更改,开发人员可能会以不同的方式修改他们的环境。CI是最适合规范环境的地方。
  • 测试人员只需从CI中提取最新版本即可。因此,他们既不需要拥有、学习和使用开发工具,也不需要任何开发人员手动发送他们的构建。
  • 准备发布时:
    • 测试变得更加重要,因此有一个有准备好的测试构建的地方甚至更有用。
    • 您确信所有构建都是在相同的构建环境下构建的,因此您可以避免因开发人员安装之间的细微差异而引发的问题。
    • 您可以确定您正在构建版本控制系统中所签入的内容。在开发过程中,如果有人忘记签入某个内容,您会很快发现,因为对于下一个开发人员来说,它将失败。但是,如果这样的构建滑落到QA或产品中,并且他们报告了一个bug,那么它将很难跟踪。

您可能还不需要CI,但当您进入测试阶段时,我认为它将变得有用。Jenkins是在几个小时内设置的,它将简化您的测试并帮助避免愚蠢的错误(特别是当您匆忙进行快速修复时)。

票数 7
EN

Software Engineering用户

发布于 2011-11-23 10:12:43

对我来说,如果你的团队有超过1名成员,CI就会变得有趣。

你必须停止认为CI是“为我运行测试的另一台PC”。关于有一个定义和自动化的构建过程和发布管理的CI。

CI是创建您的软件发行版的唯一权威实体。如果它没有建立在CI的基础上,它就不会发生。

有了CI,你就有了自动化的限制,这将向你展示所有的手动调整,黑客和快捷键,你已经到位,只是不工作的CI,应该避免在第一。

它避免了以下问题:

  • 谁负责构建发行版?
  • 这个人全天24小时开放吗?
  • 但它建立在我的机器综合症上
  • 消除了我们发布的版本的所有模糊性。

优点(只是太多而不能提及):

  • 自动版本编号
  • 问题跟踪集成
  • 自动公制生成
  • 静态代码分析
  • 自动部署
  • 多级设置
票数 6
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/121210

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档