持续集成、持续交付、持续部署的基本含义
持续集成(Continuous Integration,CI)是一种软件开发实践。在持续集成中,团队成员频繁集成开发好的代码,一般每位成员至少每天集成一次,当然也可以多次。每次集成会经过自动化构建(包括静态扫描、安全扫描、自动化测试等过程)的检验,以尽快发现集成错误。
持续交付(Continuous Delivery)是指频繁地将软件的新版本交付给质量团队或者用户,以供评审,如果评审通过,代码就进入下一阶段。
持续部署(Continuous Deployment)是持续交付的下一步,指的是代码通过评审之后,自动部署到测试环境中或者生产环境中。
为什么需要持续集成(CI)、持续交付(CD)、持续部署呢?
持续突出的就是一个“快”字。可持续、快速迭代的软件过程是当今主流的开发要求。从产品规划,到快速开发实现,到获得用户的快速响应和反馈,处处都要“快”。尤其在互联网行业,“快”应成为一种竞争力。这一切要求软件开发企业具备快速响应的能力,这正是推动持续集成、持续交付、持续部署的原动力。
持续集成、持续交付、持续部署的过程
通过Git或者SVN构建一个统一的代码仓库。开发人员持续提交自己的修改,自动触发编译,自动集成,进行自动化测试,及早反馈集成过程中的问题,就能更好地防止出现平时不集成、集成就出现问题的现象。
通过自动化的持续集成,把管理流程固化;保证集成的有序性、可靠性;减少版本发布的不合理性(开发或者测试手动打包,可能一天打多个包,更新多次,测试不充分),保证版本可控,问题可追溯(至于哪个版本出现的问题可以回溯)。
一旦把这个持续集成的过程固定下来,形成一个自动化过程,就具备了持续集成的能力,软件交付的可靠性就大大增强,这就是一种竞争力。过程自动化,不仅仅减少了人工作业,而且降低了出错率,提高了速度,自然就会节省成本。
持续集成、持续交付、持续部署过程中的常用技术工具
- Rancher
- Jenkins
- Docker compose
- Maven
- GitLab
- Gerrit
- Sonar
- Robot
- Ceph
- Spring Boot
- React
- Redux
- MySQL
- MyBatis
- Kibana、Logstash、Elastic
持续集成、持续交付的常见流程
流程说明: