QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

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

  • 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:131057
用户头像

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

关注

评论

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

[力扣] 剑指 Offer 第四天 - 0~n-1中缺失的数字

陈明勇

Go 数据结构与算法 力扣 11月月更

Java反射(一)反射机制

浅辄

Java 反射 11月月更

极客时间运维进阶训练营第四周作业

老曹

主成分分析PCA与奇异值分解SVD-降维后的矩阵components_ & inverse_transform

烧灯续昼2002

Python 机器学习 算法 sklearn 11月月更

Dockerfile 常用命令

蜗牛也是牛

聊聊hashmap

急需上岸的小谢

11月月更

jenkins pipline 基本语法

忙着长大#

RESTful API类渗透测试的特点

阿泽🧸

RESTful API 11月月更

iMazing2022免费试用版ios设备管理器

茶色酒

imazing imazing2023

WordPress零门槛的付费阅读插件:WPPAY

ABC实验室

二阶思维

元闰子

人生 思维 二阶思维

日期工具类-操作字符串和Date、LocalDate互转,两个日期的时间差等

共饮一杯无

Java 11月月更 日期工具类

工业互联网数据处理架构

刘旭东

kafka IoT 工业互联网

2022-11-20:小团生日收到妈妈送的两个一模一样的数列作为礼物! 他很开心的把玩,不过不小心没拿稳将数列摔坏了! 现在他手上的两个数列分别为A和B,长度分别为n和m。 小团很想再次让这两个数列变

福大大架构师每日一题

算法 rust 福大大

部署代码质量检测服务 sonarqube,基于命令、shell 脚本和 pipline 实现代码质量检测

忙着长大#

jenkins

DCM:中间件家族迎来新成员

石臻臻的杂货铺

后端 SPL 11月月更

《编程的原则》读书笔记(三):软件架构的基本技法和非功能需求

Chares

软件工程 软件开发 编程原理 软件开发原则

基于k8s发布系统的实现

tiandizhiguai

云原生 K8s 多集群管理

Java中的System类

共饮一杯无

Java 11月月更 system类

企业级业务架构设计笔记三:设计起点与设计过程

程序员架构进阶

架构 业务架构 11月日更 11月月更

开发H5都会喜欢这个Vite插件

小鑫同学

前端 插件 11月月更

AST 初探深浅,代码还能这样玩?!

蔡农曰

前端 后端 代码

【愚公系列】2022年11月 微信小程序-场景值

愚公搬代码

11月月更

MongoDB源码学习:Mongo中的OpRunner

云里有只猫

mongodb 源码学习

kitti数据集在3D目标检测中的入门

Studying_swz

3D点云 11月月更

聊聊ThreadLocal

急需上岸的小谢

11月月更

Linux 安装

芯动大师

Linux Linux操作系统 11月月更

日期时间类(Date、DateFormat、Calendar)

共饮一杯无

Java 11月月更 日期工具

第九期 - 模块七

wuli洋

制订需求分析框架和分析计划

穿过生命散发芬芳

需求分析 11月月更

SpringCloud相关组件

急需上岸的小谢

11月月更

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