一、什么是devops
1.1 devops定义
DevOps是一组过程方法与系统的统称,用于促进开发、技术运营和质量保障部门之间的沟通、协作与整合:以始为终,运维合一
1.2 devops理念
理念是让开发人员可以持续集成,运维人员可以持续交付和持续部署。让整个开发过程自动部署与上线
1.3 devops实现
devops图
这里从开发和运维两个方面初步介绍devops实现需要用到的工具
- 开发:git、gitlab、github、githab(代码平台),sonarqube(代码质量检测),appscan(漏洞扫描)……
-运维:jenkins、docker、k8s、maven……
二、CI/CD/CO基础
- CI:持续集成
- CD:持续交付
- CO:持续部署
2.1 持续集成CI
持续集成指的是开发人员能够频繁地将其代码集成到公共代码仓库的主分支中。
开发人员能够在任何时候多次向仓库提交作品,而不是独立地开发每个功能模块并在开发周期结束时一一提交。
持续集成的好处就是可以加速了软件开发进度,快速的发现错误,节省人力成本。
持续集成
2.2 持续交付CD
持续交付指的是在持续集成的环境基础之上,将代码部署到预生产环境。
持续交付:代码开发->单元测试->合并代码-->测试-->手动-->部署到预生产
持续交付
2.3 持续部署CO
持续部署是持续交付的下一步,指代码在任何时刻都是可部署的,最后将部署到生产环境的过程自动化。
持续部署和持续交付的区别就是最终部署到生产环境是自动化的
持续部署
三、持续集成实施(代码发布流程)
代码发布流程
- 第一步,开发者向代码仓库提交代码。
- 第二步,根据开发者提交的代码合并到主分支进行自动化测试,这里是进行单元测试,也就是对函数和模块进行测试。
- 第三步,源码构建,指的是将源码转换为可以运行的实际代码,比如安装依赖,配置各种资源。
- 第四步,构建完成进行第二轮全面测试,这里会进行单元测试和集成测试,对产品功能进行全链路测试。
- 第五步,将通过测试的代码版本进行打包存档,发送到生产环境的web服务器,web服务器解压后,将站点目录通过符号链接指向解压后的本地目录。(ps:在部署之前将数据库进行备份,方便新版本出现的问题时进行回滚)
- 第六步,新版本出现难以修复的问题时进行回滚到之前版本,这里只需要将符号链接指向指向上一个版本的目录即可,将之前备份的数据库进行恢复。