写点什么

另一种声音:持续集成已死

  • 2014-10-17
  • 本文字数:935 字

    阅读完需:约 3 分钟

持续集成(Continuous Integration)一直被认为是敏捷开发的重要实践之一,但也有专业人士开始挑战这种观点。Yegor Bugayenko 是 teamed.io 的联合创始人和 CTO,他在最近的一篇博客中毫不客气地指出:“持续集成已死”。

持续集成的目的简单而明确。当有人向代码库的主分支提交代码的时候,后台的持续集成服务器会尝试去构建整个产品,包括编译、单元测试、集成测试、质量分析等等。结果只有两种:成功或失败。如果结果失败了,那就说明有人提交了对产品有害的代码。

单从技术上讲确实如此,但 Bugayenko 认为,从整个组织的角度来讲,这却是不合时宜的。他认为最大的问题在于:

如果构建失败,整个开发团队必须停下手里的工作,立刻修复他们的错误。

谁愿意停下来呢?产品经理盯着产品早日上市,而项目经理,需要为项目的最后期限负责,被压力赶着走的程序员更不会了。Bugayenko 描述了他所见到的真实情况:

我们开始忽略持续集成的状态,不管是成功还是失败。我们还是埋头干我们手里的事情。也许明天,也许周一,等我们有空的时候再修复构建的错误。

Bugayenko 也尝试了用严格的纪律来保证团队及时修复错误,但这样也有问题:

如果这样做,你的最终结局就是得到一种“由恐惧驱动的开发模式”。程序员会害怕提交代码到仓库中,因为他们知道如果导致构建错误,他们至少要道歉。

严格的纪律只会使情况更糟糕,程序员更愿意把代码保留在本地以免犯错,从而拖慢了开发流程。等到必须要提交的时候,一次提交很多代码,如果出错,又很难回溯。

对于这种困境,Bugayenko 给出了他认为可行的方案:“对主分支实行只读策略”。这种方式禁止开发人员直接向主分支提交任何代码,取而代之的是一个脚本,它会在合并代码前做一系列测试,确保无错才允许提交。这样做解决了前面的两个问题:主分支永远是“干净”的;程序员也不用再担心犯错,因为他们最多就是被脚本拒绝提交而已。

Bugayenko 还给出了多篇相关文章来支持自己的观点。在博客的评论区,也有读者指出,Bugayenko 所说的解决方案在现实中一直被一些代码审核系统所采用。


感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2014-10-17 11:379346
用户头像

发布了 77 篇内容, 共 39.4 次阅读, 收获喜欢 26 次。

关注

评论 1 条评论

发布
用户头像
什么乱七八糟的文章
2020-09-01 16:24
回复
没有更多了
发现更多内容

云原生时代,如何构建数字化转型架构?

博文视点Broadview

等保测评一次多少钱,收费标准是怎样的?

行云管家

网络安全 等保 等保测评 等保2.0

阿里内部最新“SpringCloudAlibaba学习笔记”(全彩第三版)限时开源

Java 架构 面试 微服务 Alibaba

应用开发中的存储架构进化史——从起步到起飞

Java 编程 架构 面试 后端

刷爆Leetcode!字节算法大佬进阶专属算法笔记:GitHub标星97k+

Java 架构 面试 程序人生 LeetCode

PerfDog携手Imagination,助力开发者获取GPU关键数据

WeTest

智能汽车的定义是什么?

SOA开发者

@InjectMocks 使用

且听且吟

GK架构营模4作业

Ping

金九银十面试如何得到面试官青睐?2021最新大厂Java面试真题合集(附权威答案)

Java 架构 面试 程序人生 编程语言

国庆临近,字节后端开发3+4面,终于拿到秋招第一个offer

Java 架构 面试 后端 计算机

我国智能汽车产业环境与政策导向

SOA开发者

遇见乌镇 | VoneCredit洞见供应链金融新未来

旺链科技

世界互联网大会 供应链金融

让数据库无惧灾难,华为云GaussDB同城双集群高可用方案正式发布

华为云开发者联盟

数据库 高可用 集群 华为云GaussDB 同城双集群

垂直CRM,能否走到终局?

ToB行业头条

车载高速CAN(HighSpeed CAN)通信基本原理讲解

SOA开发者

vivo全球商城-营销价格监控方案的探索

vivo互联网技术

后端 服务器 监控系统 营销数字化 亿级架构设计

如何管理职场新人?

石云升

团队管理 管理 引航计划 内容合集 9月日更

一文带你掌握工作流引擎flowable所有业务概念

小鲍侃java

后端 引航计划

如何撬动企业数字化转型?智能客服是关键支点

ToB行业头条

2021金九银十,啃完这35个Java技术栈,冲刺百万年薪不是梦

Java 架构 面试 程序人生 编程语言

浅谈加密基础设施

I

基础设施 信息安全 加密 密码学 加密基础设施

以技术驱动云上创新增长,阿里云计算峰会上海完美收官

互联网 存储 云服务 科技 计算

🏆【SpringBoot技术专题】「FtpServer文件服务」教你如何基于Springboot开发一个”可移植“的轻量级文件服务项目系统!

码界西柚

Apache springboot ftp服务 9月日更 FtpServer

三款Linux文件传输工具简单介绍-行云管家

行云管家

Linux 文件传输 IT运维

AI专家一席谈:复用算法、模型、案例,AI Gallery带你快速上手应用开发

华为云开发者联盟

算法 模型 案例 AI Gallery 应用开发

ThingMap一键城市2.0重新出发:快速生成三维城市

ThingJS数字孪生引擎

地图 物联网 可视化 数字孪生

音视频编解码 --X264码率控制初探

Fenngton

音视频 ffmpeg 编码 码率控制 引航计划

第5章-《Linux一学就会》- Linux基本操作和服务器硬件选购指南

学神来啦

Linux linux运维 linux学习 Linux教程

课程升级 | 极速构建知识体系,即学即用 Serverless

阿里巴巴云原生

阿里云 Serverless 云原生 活动 课程

如何加速云原生数据应用?这个开源项目备受关注

阿里巴巴云原生

阿里云 开源 云原生 Fluid

另一种声音:持续集成已死_DevOps & 平台工程_曹知渊_InfoQ精选文章