IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> 都在说CI/CD,到底什么是CI/CD -> 正文阅读

[开发测试]都在说CI/CD,到底什么是CI/CD

引入

这篇文章是自己工作多年对CI/CD的理解,纯属个人见解。

不想说太多概念性的东西,直接从技术人员实际能接触的过程来展开说说。另外我这篇只是想关注一些通用的流程,细节的不同这里不纠结。比如微服务的CI/CD和单体服务有些不同,如果涉及到容器和k8s,又会有不同的地方。这里都不展开说。

CI指的是持续集成,CD指的是持续部署。合在一起通常包含这几个过程:

在这里插入图片描述

代码阶段

代码节点也可以叫开发阶段,这个阶段我们一般是本地开发代码,这个阶段首先涉及到一些开发工具比如idea,vscocode等。

同时,我们需要一个代码托管工具,常用的比如git,当然并不限制一定要用git。

最后还有一个很重要但是容易被忽略的环节,就是code review(简称cr),cr的重要性无需多说,在国外很多科技公司,cr都是一个强制的流程。国内感觉最近几年对cr也越来越重视了,我之前在的一个公司,代码没有经过cr是不允许发布到测试环境的。

关于cr阶段使用的工具,不同的公司一般不一样。我见过直接使用idea等开发工具进行cr的,也有用gitlab等托管工具cr的,有些大点的公司有自己开发的cr工具。不过工具不重要,重要的是过程。

编译阶段

编译阶段也可以叫构建阶段。首先通常会考虑依赖的问题,比如编译java代码会考虑jdk的版本,pom依赖等这些都是需要解决的。

其次一个要关注的点就是单元测试,编译阶段一般都会自动运行你在开发阶段编写的单元测试代码(当然前提是你写了,哈哈)。同时单元测试要确保一定的覆盖率,覆盖率很低的单元测试也没啥意义。这样要求我们要一个良好的开发习惯:写单元测试。关于单元测试的种种,不是本文的重点,这里不表。

编译没问题,并且单元测试没问题,一般就可以构建、打包发布到测试环境了。打包发布常用的工具是jenkins,如果涉及到容器部署,这个阶段通常我们也会打包服务的镜像并且推送的镜像仓库(可以是私有仓库或者公有仓库)。

测试环境

我们的服务打包到测试环境之后,一般我们需要在测试环境进行集成测试,所谓的集成测试,就是把流程整合按照接口或者某个特定功能的测试。比如下单的流程,可能涉及很多模块,我们对下单这个流程的测试就属于集成测试。

生产环境

生产环境涉及的环节比较多,也是最重要的。毕竟这是最终交付的环节,前面所有的努力都是为这一步做准备。

当我们发布到生产环境时,通常不会马上进行全量的发布,而是先进行灰度部署。灰度部署是指逐渐将生产环境流量从老版本切换到新版本。通常流量是按比例分配的。例如 90% 的请求流向老版本,10% 的请求流向新版本。然后没有发现问题,就逐步扩大新版本上的流量,减少老版本上的流量。

这种能最大限度的减少出现故障造成的影响。

实现灰度发布有很多方案,比如通过前端的cdn技术,后端的方案就更多了,比如基于nginx实现,如果你是基于容器部署,可以通过k8s的ingress实现灰度发布等。

灰度验证完没有问题,一般就可以进行全网发布了。尽管前面已经做了各种测试了,全量发布后依然不能保证一定不会出问题,因为有些问题可能是流量很大的时候才会暴露。这就要求我们一定要有回滚机制,当线上出问题时能够快速的回滚到上一个版本。

另外一个关注点就是,服务上线后持续的监控以及出现问题的及时告警机制。这种一般要借助于一些第三方的监控工具,比如Prometheus等。

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2022-03-30 18:55:28  更:2022-03-30 18:59:16 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 0:22:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码