10-DevOps
2021-12-13 本文已影响0人
紫荆秋雪_文
一、DevOps概念
1、DevOps是什么
image.pngDevelopment 和 Operations 的组合
1、DevOps:看作开发(软件工程)、技术运营和质量保障(QA)三者的交集
2、突出重视软件开发人员和运维人员的沟通合作,通过自动化流程来使得软件构建、测试、发布更加快捷、频繁和可靠
3、DevOps希望做到的是软件产品交付过程中IT工具链的打通
,使得各个团队减少时间损耗,更加高效地协同工作。
image.png
二、CI/CD是什么
image.png持续集成、持续部署
1、基本理念
1.1、持续集成(Continuous Integration)
持续集成是指软件个人研发的部分向软件整体部分交付,频繁进行集成以便更快地发现其中的错误。
CI需要具备
- 全面的自动化测试:这是实践持续集成&持续部署的基础,同时,选择合适的自动化测试工具也极其重要
- 灵活的基础设施,容器,虚拟机的存在让开发人员和QA人员不必再大费周章
- 版本控制工具:Git、SVN、CVS等
- 自动化的构建和软件发布流程工具:Jenkins、Flow.ci
- 反馈机制:在构建/测试的失败,可以快速地反馈到相关负责人,以尽快解决达到一个更稳定的版本
1.2、持续交付(Continuous Delivery)
持续交付在持续集成的基础上,将集成后的代码部署到 更贴近真实运行环境中。持续交付优先于整个产品生命周期的软件部署,建立在高水平自动化持续集成之上
CD和CI的优点非常相似
- 快速发布:能够应对业务需求,并更快地实现软件价值
- 编码->测试->上线->交付 的频繁迭代周期缩短,同时获得迅速反馈
- 高质量的软件发布标准:整个交付过程标准化,可重复,可靠
- 整个交付过程进度可视化,方便团队人员了解项目成熟度
- 更先进的团队协作方式。从需求分析、产品的用户体验到交互设计、开发、测试、运维等角色密切协作,相比与传统的瀑布式软件团队,更少浪费
1.3、持续部署(Continuous Deployment)
持续部署是指当交付的代码通过评审之后,自动部署到生产环境中。持续部署是持续交付的最高阶段。这意味着,所有通过了一系列的自动化测试的改动都将自动部署到生产环境。它也可以被称为
Continuous Release
三、最近实践 image.png
1、内循环:开发人员需要做的工作
- 编码、测试、运行、debug、提交
- 代码推送到代码仓库
- 进行CI过程,万物兼可容器化,打包成一个Docker镜像
- 镜像推送的镜像仓库
- 测试
- 持续部署(CD),拿到镜像,进行CD
2、外循环
- 运行监控
- 生产环境的管理
- 监控
- 线上反馈到开发
3、实践流程 实践流程.png
- 创建开发分支
- 提交分支的代码
- 进入持续集成流程
- 当前分支代码功能性自动化构建和测试
- 自动工具推送这次提交
- 自动化集成测试
- 可以看到效果
- 人工确认此次功能是否发布到生产环境
- 合并代码
- 进入持续部署流程
- 构建
- 测试
- 部署