持续集成、持续交付和持续部署
持续集成
Continuous Integration:持续集成,简称CI,是软件开发周期的一种实践,把代码仓库(Gitlab或者Github)、构建工具(如Jenkins)和测试工具(SonarQube)集成在一起,频繁的将代码合并到主干然后自动进行构建和测试。简单来说持续集成就是一个监控版本控制系统中代码变化的工具,当发生变化是可以自动编译和测试以及执行后续自定义动作。
其实这里最关键的是自动化测试,这个是最难的,因为测试涉及内容很多。
持续交付
Continuous Delivery:持续交付,简称CD,是在CI的基础进行了扩展,在CI环节完成了软件构建和测试工作并形成了新的版本,那么接下来就要进行交付,而这里的交付并不是交付到生产环境,而是类生产环境(STAGING),我们可以理解为灰度环境或者预发环境,进而接受部分真实流量的测试。如果没有问题的话则通过手动的方式部署到生产环境。如下图所示:
持续部署
Continuous Deployment:持续部署,简称CD,它是在持续交付的基础上打通最后一公里的工作,就是把手动部署到生产环境的方式升级为自动部署。看下图和上图在最后部署到生产环境中的区别。
总结
持续集成、持续交付和持续部署其目的是减少代码改动到投入生产的所需时间,提早发现风险、减少QA的测试时长、减少运维的人工干预。整体上是一个提效的过程。当然它也不是万能的。
参考
The Product Managers’ Guide to Continuous Delivery and DevOps