写点什么

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

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

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

关注

评论

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

Alert 趋势图与原始指标图整体优化、指标趋势图查询异常中台功能

博睿数据

linux的find命令常用说明

百度搜索:蓝易云

云计算 Linux 运维 云服务器 find

【亿级数据专题】「分布式消息引擎」 盘点本年度我们探索服务的保障容量的三大关键方案实现

洛神灬殇

分布式 熔断 限流 降级 2024年第二十七篇文章

「一手好牌」|博睿数据新年掼蛋礼盒:开年好运,事业高飞!

博睿数据

Linux系统gunzip命令有何作用?如何使用?

百度搜索:蓝易云

云计算 Linux 运维 云服务器 gunzip

四方维ECAD模型成为元器件的新标配

财见

一文带你简单了解多租户模型定义以及好处

行云管家

SaaS 多租户

第38期 | GPTSecurity周报

云起无垠

Java 编程指南:入门,语法与学习方法

小万哥

Java 程序人生 编程语言 软件工程 后端开发

XMind 转 Excel 与 CSV 的思路与实现

牧遥

Excel XMind 测试工具 csv Java’

10V单通道负载开关

梦笔生花

使用 HashiCorp Vault 保护 NGINX 中的 SSL 私钥

NGINX开源社区

HashiCorp SSL/TLS nginx 开源版 安全防护 保护 SSL 密钥

【年后跳槽必看篇-非广告】Kafka核心知识点-第四章

派大星

kafka Java’

如何对混合日志进行自动化解析

华为云开发者联盟

开发 华为云 华为云开发者联盟

Wireshark中的ARP协议包分析

小齐写代码

面试官:什么是JIT、逃逸分析、锁消除、栈上分配和标量替换?

王磊

Java 面试

Covalent Network:全新链上协议收入体系,财务透明革命引领者

股市老人

创业7年复盘,中美企业服务市场差异浅析

Kyligence

AI 数据分析

《深入理解计算机系统(原书第3版)》PDF

程序员李木子

如何解决系统报错:nf_conntrack: table full, dropping packets

百度搜索:蓝易云

云计算 Linux 运维 服务器 云服务器

提升系统管理:监控和可观察性在DevOps中的作用

禅道项目管理

项目管理 DevOps 系统管理

IPQ9574 and QCN9274 Industrial grade and commercial difference? Performance, transmission, etc

wifi6-yiyi

qcn9274 ipq9574

稀疏场景高性能训练方案演变|京东广告算法架构体系最佳实践

京东零售技术

人工智能 架构 算法 GPU算力

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