谈谈个人对持续集成CI的理解

持续集成 Continuous Integration作为极限编程的其中一个实践而出现的。但是其自身所体现出的价值却已经超出极限编程了。


目前在我们的项目中所采用的CI已经逐渐的从最开始的抵制到现在被项目组成员所接受,从个人的观点来看,持续集成为项目提供了以下的几点作用:

1. 及时发现bug(通过acceptance test和UT),能够在提交代码后第一时间找出bug,使得debug的时间大幅缩短。CI不能阻止我们产生bug,但是可以帮助我们减少debug所用的时间,免去了之前做项目进行波及分析同时无法自测试的问题。(这点是我认为的CI提供给开发者最为重要的的优点)


2. 随时可以拿出能够使用的软件版本,即使它只有最简单的功能,也比你设计一个拥有全部功能,但是充满了bug,无法及时发布的版本强。因为在CI中的UT及Acceptance Test都会在每次提交给Mainline以后编译完成后自动运行,因此只要Pass的版本,那么必然是测试全部通过,而每一个Acceptance Test都是一个端到端的模拟真实环境下的test case,由此必然保证这些功能点的可用性。(这点是我认为的对于软件的使用者客户最为重要的优点,他们能够通过实实在在的使用beta版本感受开发的进度)


3. 消除了传统模式下面从project的code到真实可用的软件package之间的繁琐部署工作,能够频繁的进行发布。传统上面的开发来说这些工作都不由程序员完成,他们只要交付可供正常work的project code即可,这点工作常由PM或者PO协调完成(因此消除code到实际部署并产生可用的版本之间的鸿沟这点对于PO是对重要的特性)。


当然CI只是保证了快速的从project code产生可用的软件版本,从可用的软件版本到真正实际部署的商业运行环境之间任然存在着一条鸿沟,CI所做的工作在此就结束了,剩下的应该交给CD(Continuous Delivery)去完成了,传统的运维人员需要做的工作。


关于CD目前尚未有一个明确的认识,需要补充相关的理论知识,同时在项目中实际运用并体会到其真正的好处才能做出判断。


希望自己下次写出对CD的肤浅理解不会太远!



你可能感兴趣的:(编程,工作,测试)