写点什么

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

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

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

关注

评论

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

Hadoop与数据湖是什么关系?终于有人说明白了!

雨果

hadoop 数据湖

Node js 开发入门 —UDP 编程,小白也能轻松学会

CRMEB

开源一夏 | Docker Compose从入门到实践

微枫Micromaple

开源 容器 云原生 8月月更

Nginx + keepalived 实现高可用

C++后台开发

nginx 高可用 中间件 后端开发 C++开发

如何选择适合自己的前端培训机构

小谷哥

IPQ4019 IPQ4029 ,wallys ,802.11ac Outdoor Metal Waterproof Enclosure Metal Outdoor

wallys-wifi6

大型软件团队协作中的常见难题和避坑策略|ONES 研发管理大师课

万事ONES

如何在OpenHarmony上使用SeetaFace2人脸识别库?

OpenHarmony开发者

OpenHarmony

java编程技术学习好还是自学好

小谷哥

Ding!您有一份ChunJun实用指南,请查收

袋鼠云数栈

NFTScan 与 Bulletime 在 NFT 底层数据方面达成战略合作

NFT Research

区块链 NFT 合作伙伴

ElasticSearch 集群备份与恢复实践

移动云大数据

elasticsearch

RT-Thread记录(十一、I/O 设备模型之UART设备 — 源码解析)

矜辰所致

RT-Thread 8月月更 IO设备模型

EMQ携“云边一体化”IoT解决方案亮相第十届中国电子信息博览会

EMQ映云科技

物联网 IoT 云边一体 emq 8月月更

一箭双雕!刷完阿里P8架构师spring学习笔记+源码剖析,涨薪8K

退休的汤姆

Java 面试 阿里 Java工程师 spring、

阿里资深架构师熬夜纯手写的238页微服务容器化开发实战笔记

退休的汤姆

面试 微服务 社招 Java工程师 秋招

IntelliJ IDEA 设置 IBM Semeru JDK

HoneyMoose

科创人·望繁信创始人索强:中国版流程挖掘注定有完全不同的活法

科创人

学好前端开发技术的培训机构推荐

小谷哥

前端程序员在培训学习中需要学习什么?

小谷哥

零基础学习java有必要参加吗?

小谷哥

所有人!把膝盖准备好,这份“保姆级”的RabbitMQ笔记,你不服不行

退休的汤姆

面试 RabbitMQ 社招 Java工程师 秋招

内网场景 Dubbo 微服务接入观测云

观测云

字节跳动基于ClickHouse优化实践之“多表关联查询”

字节跳动数据平台

数据库 数据分析 OLAP Clickhouse 数据查询

开源小白到核心开发——我与 sealer 的成长故事

阿里巴巴中间件

Docker 阿里云 容器 云原生 sealer

开源公开课丨大数据调度系统Taier任务调度介绍

袋鼠云数栈

如何完美的进行数字化转型?

雨果

数字化转型

IBM Semeru Windows 下的安装

HoneyMoose

Apache Pulsar Tenant 和 Namespace 级别限速使用与实现

移动云大数据

pulsar

干货 | 工单系统与 ITSM 软件的区别是什么?

嘉为蓝鲸

运维 AIOPS 流程 ITSM 工单

iofod - 借助低代码快速构建WeUI表单

独来独往

前端 低代码 表单 weui

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