NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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

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

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

关注

评论 1 条评论

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

重磅发布!!!蚂蚁图团队开源高性能原生图存储系统CStore

TuGraphAnalytics

数据库 分布式 图计算 图存储 图原生

app开发

Geek_8da502

Caché/M 数据库上面的那个 é 怎么打

HoneyMoose

极狐GitLab 镜像仓库使用技巧

极狐GitLab

DevOps gitlab 镜像 CI/CD 镜像仓库

聊点写作踩坑那点破事儿

6点无痛早起学习的和尚

写作 21 天技术人写作行动营

C/C++内存操作 | AI工程化部署

AIWeker

c AI AI工程化部署

用友发布数据资产入表解决方案 加速激发数据要素价值

用友BIP

数据资产入表

让艺术触手可及!3DCAT实时云渲染赋能真浪数字艺术馆首展

3DCAT实时渲染

实时云渲染 元宇宙解决方案

2024年高效远程协同运维工具推荐

行云管家

IT运维 远程协同 协同运维

EazyDraw for Mac:让设计更高效

影影绰绰一往直前

万界星空科技电子电器装配行业MES解决方案

万界星空科技

mes 万界星空科技mes 电子mes 电子工厂 电子电器制造业

高校刮起元宇宙风!3DCAT实时云渲染助力川轻化元校园建设

3DCAT实时渲染

实时云渲染 元宇宙解决方案

内置功率 MOSFET 的高频同步整流降压开关变换器

智趣匠

法语 Alt 代码表

HoneyMoose

德语 Alt 代码表

HoneyMoose

群晖(Synology)新建存储池使用 Home 服务

HoneyMoose

37 | 贪心算法:如何用贪心算法实现Huffman压缩编码

鲁米

Pixelmator Pro for Mac:设计师的得力助手

影影绰绰一往直前

场场爆满的昇腾 AI 开发者创享日:照见产业数智化的涓涓动力

Alter

【写作训练营打卡|07】你知道文章的配图哪来的吗?

HuggingFists-低代码玩转LLM RAG(2) Query

数由科技

人工智能 低代码 数据科学 LLM rag

万界星空科技MES系统中的生产调度流程

万界星空科技

数字化转型 工业互联网 mes 云mes 万界星空科技mes

大型语言模型在实体关系提取中的应用探索(二)

数由科技

知识图谱 ChatGPT LLM 实体抽取 Bard

Blocs for Mac:让设计更高效

影影绰绰一往直前

实时数据推送应用

玄兴梦影

消息推送 实时数据

下一站 Gen AI 城市巡展指南来了!“码”上出发,Let's 构!

亚马逊云科技 (Amazon Web Services)

AIGC

大模型助力科技革命:2023年的里程碑与大模型的未来展望

屿小夏

年度总结 大模型

大模型扫盲问题集

小判

大模型

西班牙语 Alt 代码表

HoneyMoose

从 0 到 1 手动搭建 k8s 集群 - 添加 master 节点

doramingo

云原生 扩容 kubenetes

mac电脑强大的文件重命名工具A Better Finder Attributes 7注册激活版

胖墩儿不胖y

Mac软件 文件重命名工具 文件重命名软件 批量重命名软件

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