持续集成(CI:Continuous Integration)
持续集成,强调在开发人员提交代码后,立即对代码进行单元测试与构建,根据执行结果,我们可以确定新代码与旧代码是否能够正确的集成在一起。
在这一阶段能够尽早的暴露一些问题,这也是持续集成的重要性体现。
持续交付(CD: Continuous Delivery)
持续交付,是在持续集成的基础之上,将构建后的项目部署到测试环境,以便测试人员进行更详细的功能、性能等测试。
持续部署(CD: Continuous Deployment)
持续部署,在持续交付的基础之上,也就是再测试人员确保项目的功能完整性后,增加自动部署到生产环境的流程。
为什么需要CICD
传统应用开发模式:
- 开发团队开发并提交代码。一次提交可能包含多个功能的实现。
- 运维团队部署项目到测试环境。
- 测试团队编写测试用例,对项目进行功能测试。
- 测试发现异常,则开发重新提交,运维重新部署,测试重新测试。
- 测试完毕,运维部署到生产环境。
存在问题:
- 大部分错误在早期的时候就可以发现,但往往等到集成之后才会暴露出来一些低级错误。
- 整个开发、测试、部署的过程都需要人工处理,耗费时间,除非开发一套适配的自动脚本。而开发自动脚本,当开发到了一定高度自动化的形态时,某种意义上就是另一种CICD得体现了。
CICD是实现了自集成、交付、部署于一体的一套自动化流水线方案。
CICD有什么能力
- 尽早暴露问题,大部分低级问题可以在持续集成阶段发现并处理。
- 减少人工部署时间,也减少了人工操作引入的风险。
- 拥有更加频繁的交付价值。