查看原文
其他

为什么要持续集成?

廖雪青 程序员小乐 2020-10-08


  点击上方 "程序员小乐" ,关注公众号

8点20分,第一时间与你相约

每日英文

True Strength is being able to hold it together when everyone is expecting you to fall apart. 

真正的坚强是当所有的人都希望你崩溃的时候,你还可以振作。


每日掏心话

人生,就是跑步。我们总想超越别人,辉煌自己的人生;也老是担忧被别人超越,而不愿停止追寻。


来自:廖雪青 | 责编:乐乐

链接:jianshu.com/p/1cd01bcc77f2

图片来自网络



   00 前言   


什么是持续集成,为什么要持续集成?本文对持续集成前后两种开发实践做了对比分析,从而直观的感受到持续集成的好处。



   01 传统的开发模式   


传统的开发模式.png

存在的问题

1.Bug总是在最后才出现。
2.越到项目后期,问题越难解决。
3.软件交付时机无法保障。
4.程序经常需要变更。
某些项目中,程序会经常需要变更,特别是敏捷开发实践者。
5.无效的等待变多。
开发在等待集成其他人的模块,测试人员在等待开发修复Bug,产品经理在等待新版本上线给客户做演示,项目经理在等待其他人提交代码。
6.用户的满足度低。



  02 持续集成   


什么是持续集成

在软件工程中,持续集成(CI)是指将所有开发者的工作副本每天多次合并到主干的做法。Grady Booch 在1991年的 Booch method 中首次命名并提出了 CI 的概念,尽管在当时他并不主张每天多次集成。而 XP(Extreme programming,极限编程)采用了 CI 的概念,并提倡每天不止一次集成。

持续集成服务器

持续集成服务器就是能够采用自动化的手段,来解放人的双手,实现项目持续集成的工具。与之配套的软件有TeamCity、Jenkins、Go等。
持续集成的工作模式

持续集成的开发模式.png

持续集成的好处?

1.解放了重复性劳动。

自动化部署工作可以解放集成、测试、部署等重复性劳动,而机器集成的频率明显比手工高很多。

2.更快地修复问题。

持续集成更早的获取变更,更早的进入测试,更早的发现问题,解决问题的成本显著下降。

3.更快的交付成果。

更早发现错误减少解决错误所需的工作量。集成服务器在构建环节发现错误可以及时通知开发人员修复。集成服务器在部署环节发现错误可以回退到上一版本,服务器始终有一个可用的版本。

4.减少手工的错误。

在重复性动作上,人容易犯错,而机器犯错的几率几乎为零。

5.减少了等待时间。

缩短了从开发、集成、测试、部署各个环节的时间,从而也就缩短了中间可以出现的等待时机。持续集成,意味着开发、集成、测试、部署也得以持续。

6.更高的产品质量。

集成服务器往往提供代码质量检测等功能,对不规范或有错误的地方会进行标致,也可以设置邮件和短信等进行警告。



   03 持续集成的最佳实践   


1.频繁检出代码。

有时候代码冲突无可避免,频繁检出代码,可以让本地的副本和代码库中的版本最小差异化。

2.频繁提交代码。

与1的原理类似,频繁提交代码,可以让其他人检出副本和代码库中的版本最小差异化。

3.减少分支,回归主干。

多个分支并行应及早将变更集成到主干中,避免同时维护软件的多个版本。

4.使用自动化构建。

可以使用Maven、Ant等来实现自动化构建,可以在构建过程中实现自动化测试。前提是有写单元测试用例。

5.提交测试。

在提交工作之前,每个程序员必须本地集成所有代码,做一个完整的构建和运行,并通过所有的单元测试,这样能减少集成测试在集成服务器上构建失败的风险。

6.当前状态对每个人都可见。

集成服务器在持续集成过程中发现问题应及时发送警告给相关的干系人。

欢迎在留言区留下你的观点,一起讨论提高。如果今天的文章让你有新的启发,学习能力的提升上有新的认识,欢迎转发分享给更多人。


欢迎各位读者加入程序员小乐技术群,在公众号后台回复“加群”或者“学习”即可。


猜你还想看


阿里、腾讯、百度、华为、京东最新面试题汇集

10张 GIF 动图让你弄懂递归等概念

一千个不用 Null 的理由

一文搞懂MySQL的Join

史上最烂的项目:苦撑12年,600多万行代码...

聊一聊秒杀架构设计


关注「程序员小乐」,收看更多精

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存