一张图可以很好地解释CI,CD,Devops之间的关系。
按照软件开发到发布的基本流程的阶段,结合当下流行的敏捷开发模式,那么从code到代码release的阶段可以看做是CI的过程。它的目的是保证开发人员提交的code可以通过编译并且跑通自动化测试的一些集成测试,从而保证代码可持续的提交以及build 环境的clean。 而continous delivery和continous development经常会混用,他们都是基于CI的更进一步。是为了确保软件release的质量,通常会跑一些回归测试等。一般情况下continous deployment更针对web相关的应用或者SAAS的应用,强调从发布到产品的过程
对于较大的产品,CI可能在不同的子系统中都有,而CD一般是针对产品级别的。
下面的图中左边一般是CI,而从左边到在右边则是conver CD的内容
一般来说从code到build再到产品的发布,这几个过程的环节是这样的。
但针对continous delivery 和continous deployment也有不同的观点,认为两者存在细微的差别,见下图:
但终极来说continous deployment应该是每个公司的最终目标,它能够保证每一个code 都是可以delivery的而不单单是每一个code都尽快的delivery。
在快速获取用户反馈以及争取市场的情况下,Continous deployment成为一个很热门的话题。但不管怎么变,CI是它的基础,而CI又依赖于automation test。
===========================================================================================================================================华丽丽的分界线,Wiki上一篇很好的关于各种CI Tool的比较,我的大爱呀~~~可惜没办法去试验各种工具。
http://en.wikipedia.org/wiki/Comparison_of_Continuous_Integration_Software