写点什么

管道式的持续集成解决方案好吗?

  • 2007-09-29
  • 本文字数:941 字

    阅读完需:约 3 分钟

敏捷开发的最佳实践之一就是持续集成,它使团队成员可以有规律地将他们的代码与基线集成并运行所有的单元测试和系统测试。在大多数团队中,当代码检入后, 持续集成服务器都能很快地自动完成这个工作。通常在项目初期一切都很顺利,但有时当团队或代码基线变得很大时,持续集成的速度就会开始下降。构建内容在增 加而反馈速度却在下降,构建一次可能要花上一小时甚至更多才能知道成功与否,而些时,有人可能已经将他们的代码检入到构建失败的版本中了。

为了解决这个问题,很多团队使他们的持续集成“管道化”,即分阶段进行构建。运行轻量级的构建,这个构建仅包括执行速度较快的那些测试,这样团队可以较快的得到初步结果,而更大范围的构建会在后台运行。而那些较慢的功能 / 集成 / 系统测试会在随后的阶段执行。 Simon Stewart 认为这种解决方案是有好处的

这就是我们为什么最终会采用构建管道来做解决方案。较迟的构建比较早的构建会执行的更慢一些,但一切是按照能够提供更快反馈的方式来组织的。我们知道我们 只需要手工测试这些构建,让它们穿过管道的终点,假如我们向其中增加一些阶段,那么我们对应用程序按照预期方式执行的自信就会随之增加。如果我们足够聪明 (快看!我们又一次拉动了“聪明”这根杠杆!)的话,我们还可以把应用部署到越来越现实的环境中,并且把它当作管道的一部分来在上面运行测试,而这些是我 们在使用开发工作站时从来没有想到的事情。

然而,不是所有人都认为这是个好主意。 ThoughtWorks 的 Julian Simpson 把它叫做“厄运管道(pipeline of doom)”。他认为,我们是在用管道(一个慢速构建机制)来回避这个问题,而不是解决这个问题。这种方法只能给我们虚假的信心,认为我们的集成是成功的。开发人员一直在几个迭代中使用这些不好的代码,这只能加剧问题。

我发现管道方法存在另一方面的问题,那就是在开发者检入代码之前不会迫使他们运行功能测试,这就相当于你不让他们通过重构去改进代码。而假如大家运行它们 时感到痛苦的话,他们就有动力去解决它们。那些测试相当于给你当头棒喝:你必须小心又小心,否则,你可能在一天内只能运行很少的几次测试。

那么,你的团队使用了阶段化持续集成了吗?对你来说,效果如何呢?

查看英文原文 Is a Pipelined Continous Integration a Good Idea?

2007-09-29 05:131415
用户头像

发布了 100 篇内容, 共 25.7 次阅读, 收获喜欢 5 次。

关注

评论

发布
暂无评论
发现更多内容

新增原创标签相关改动

sean77

aa bb cc

数据类型· 第1篇《元组和列表的性能分析、命名元组》

清菡软件测试

测试开发

京东智联云与CDA携手 共同打造电商领域数字化人才认证标准

京东科技开发者

大数据 数据分析 数据分析师

公安一体化警务系统搭建,微警务APP开发

t13823115967

App 智慧公安

Mybatis是如何解析配置文件的?

田维常

mybatis

生产环境全链路压测建设历程之九 淘宝网全链路压测的原理

数列科技杨德华

以理性不断的崇敬 - 对DDD之后复杂业务软件系统设计的思考

冯文辉

领域驱动设计 DDD 架构设计

我国一项物联网安全测试技术成为国际标准;Windows 10将支持安卓应用

京东科技开发者

从面试角度分析ArrayList源码

Java旅途

Java List 面试 ArrayList

喜大普奔,FL Studio终于出官方中文版了!

懒得勤快

编曲 编曲宿主 mid flstudio 汉化

《逻辑和计算机设计基础》第五版(英文原版)PDF免费下载

计算机与AI

计算机基础 计算机组成原理

【架构师训练营 1 期】第十二周学习总结

诺乐

浅谈产品与项目之间的爱恨情仇

随(曾铭新)

数据上链,区块链技术平台搭建

t13823115967

数据上链 区块链应用

《构建高性能WEB站点》.pdf

田维常

架构

社区团购大战升级:零售行业再次面临挑战

石头IT视角

FORSAGE智能合约矩阵系统软件APP开发

系统开发

ReactNative | 项目复盘,涉及环境、RN版本升级、安全等方案

梁龙先森

大前端 混合应用开发 React Native

如何搭积木式的快速开发H5页面?

徐小夕

Java 大前端 React 数据可视化

架构师训练营第四周总结

Geek_xq

领域驱动设计(DDD)实践之路(四):领域驱动在微服务设计中的应用

vivo互联网技术

架构 领域驱动设计 DDD 领域驱动设计DDD

Week_12 作业

golangboy

极客大学架构师训练营

时序数据库DolphinDB和TimescaleDB 性能对比测试报告

DolphinDB

大数据 分布式系统 时序数据库 DolphinDB 数据库开发

一鼓作气学会“一致性哈希”,就靠这 18 张图了

四猿外

分布式 算法 一致性哈希 一致性Hash算法 哈希算法

Java虚拟机科普系列—元空间Metaspace的内存结构

Java老k

Java JVM Java虚拟机 metaspace

新增原创标签相关改动

sean77

测试 个人 aa bb

Sentinel 是如何做限流的

vivo互联网技术

高可用 限流 底层

【架构师训练营 1 期】第十二周作业

诺乐

区块链发展前景广阔,要紧跟时代步伐

13828808769

区块链发展 时代发展

求求你,别再用wait和notify了!

王磊

Java

管道式的持续集成解决方案好吗?_研发效能_Amr Elssamadisy_InfoQ精选文章