DevOps与CI/DC概念

news/2025/2/25 0:50:09/文章来源:https://www.cnblogs.com/xgg123/p/18735258

一 、什么是DevOps

DevOps 是 Development(开发)Operations(运维) 的组合词,核心是通过自动化工具和文化变革,打通开发、测试、运维的壁垒,实现软件交付的高效协作。它的目标是缩短开发周期、提升部署频率,同时保障系统稳定性

通俗举例:

想象一个团队要开发一个网站:

  • 传统模式:开发写完代码后,丢给测试团队,测试通过后再交给运维部署。过程中需要多次手动沟通,效率低且容易出错。
  • DevOps 模式:开发提交代码后,自动触发测试、构建镜像、部署到服务器,整个过程由工具链自动完成,团队协作无缝衔接。

二、什么是 CI/CD

CI/CD持续集成(Continuous Integration)持续交付/持续部署(Continuous Delivery/Deployment) 的缩写,是 DevOps 方法论的核心实践。它的目标是在应用开发阶段,通过引入自动化工具,频繁向客户交付,加速软件开发和发布周期,同时确保代码质量和稳定性

核心概念分解

1. 持续集成(CI)

  • 定义:开发人员频繁(例如每天多次)将代码提交到共享仓库(如 Git),并通过自动化工具(如 Jenkins、GitLab CI)自动触发构建和测试流程。每次提交都会验证代码是否与其他成员的修改冲突,是否通过单元测试、集成测试等
  • 通俗举例
    假设一个团队在开发一款手机应用,每个开发者负责不同功能模块。每当有人写完一段代码(比如新增一个登录按钮),系统会自动将代码合并到主分支,并模拟用户点击按钮的测试。如果测试失败(比如按钮点击后闪退),团队会立即收到通知并修复问题。这样避免了代码堆积到后期才暴露冲突和漏洞。

2. 持续交付(CD)

  • 定义:在 CI 的基础上,将已验证的代码自动部署到预生产环境(如测试服务器),确保随时可以手动触发发布到生产环境。此阶段可能包含人工审核环节
  • 通俗举例
    手机应用通过 CI 测试后,会自动生成一个测试版本,供产品经理或客户预览。如果新功能符合预期,只需点击“发布”按钮,就能将更新推送到应用商店。这一过程避免了手动打包和部署的繁琐。

3. 持续部署(CD)

  • 定义:持续交付的更高阶形态,完全自动化部署到生产环境,无需人工干预。适用于高度信任自动化测试的场景
  • 通俗举例
    如果团队对自动化测试非常自信(例如电商网站的促销页面更新),代码通过所有测试后,系统会自动将新页面推送到线上,用户无需等待即可看到最新内容。

流程图示例

[开发阶段]  
1. 代码提交 → 开发人员将代码推送至 Git 等版本控制仓库(如 GitHub、GitLab)  ↓  
[持续集成 (CI)]  
2. 自动化构建 → 触发 CI 工具(如 Jenkins、GitLab CI)自动拉取代码,编译并生成可执行文件或容器镜像  ↓  
3. 自动化测试 → 执行单元测试、代码扫描(如 SonarQube)、集成测试等,验证代码质量   ├─ 测试通过 → 进入下一步  └─ 测试失败 → 反馈开发者修复,重新提交代码  ↓  
[持续交付 (CD)]  
4. 部署到预生产环境 → 将构建产物自动部署到测试环境(如 QA 环境、预生产环境)  ↓  
5. 自动化验收测试 → 运行端到端测试、性能测试等,确保功能符合预期   ↓  
6. 人工审核 → 团队确认测试结果,手动触发生产环境部署(持续交付)  ↓  
[持续部署(可选)]  
7. 全自动部署(蓝绿/金丝雀) → 通过 CD 工具(如 Kubernetes、Ansible)将代码自动部署到生产环境(无需人工干预)  ↓  
8. 监控与反馈 → (Prometheus/Grafana)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/889278.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL的四种事务隔离级别

一.MySQL四大隔离级别 事务隔离级别 1.读未提交 (Read Uncommitted) 允许一个事务读取另一个事务未提交的数据。 2.读已提交 (Read Committed) 一个事务只能读取另一个事务已经提交的数据。 3.可重复读 (Repeatable Read) 保证在一个事务内多次读取同一数据时,其结果是一致的。…

持续分享干货!清华出品《DeepSeek如何赋能职场》PDF可下载

🔥今天分享的是清华出品《DeepSeek如何赋能职场》的PPT,内容涵盖了DeepSeek运行模式的讲解,如何向DeepSeek提问,如何构建提示词,结合实际多个实际应用场景,详细的介绍了DeepSeek结合其他多模态AI模型持续赋能职场的方法。提示词框架如何使用DeepSeek制作可视化图表如何使…

「跟着渡一学前端」并发请求实现

学习资源 并发请求 【渡一教育】 完整代码 function concurRequest(urls, maxNum) {if (urls.length === 0) {return Promise.resolve([]);}return new Promise((resolve) => {let nextIndex = 0;let finishCount = 0;const result = [];async function _request() {if (nex…

软工作业1

作业相关信息这个作业属于哪个课程 软件工程 这个作业要求在哪里 自我介绍+软工5问 这个作业的目标 自我介绍,了解软件工程基本概念个人介绍 Im YiLaiL YiLaiL/YiLaiL is a ✨ special ✨ repository because its README.md (this file) appears on your GitHub profile.🔭 …

EmEdit设置缓存目录临时文件夹

前言全局说明一、说明 1.1 环境: Windows 11 家庭版 23H2 22631.3737 EmEditor Professional (64-bit) Version 17.2.4二、打开大文本控制器三、点击右边大文本控制器上 自定义四、选择比较大的磁盘空间作为缓存空间免责声明:本号所涉及内容仅供安全研究与教学使用,如出现其他…

谈谈 ES 6.8 到 7.10 的功能变迁(3)- 查询方法篇

上一篇咱们了解了 ES 7.10 相较于 ES 6.8 新增的字段类型,这一篇我们继续了解新增的查询方法。 Interval 间隔查询: 功能介绍 Interval 查询,词项间距查询,可以根据匹配词项的顺序、间距和接近度对文档进行排名。主要解决的查询场景“创建一个多搜索词匹配的查询,同时保留…

【蓝牙小程序】在微信小程序中使用 ECharts

echarts-for-weixin 项目提供了一个小程序组件,用这种方式可以方便地使用 ECharts。 使用方式下载该项目 如有必要,将 ec-canvas 目录下的 echarts.js 替换为最新版的 ECharts。如果希望减小包体积大小,可以使用自定义构建生成并替换 echarts.js pages 目录下是使用的示例文…

Virtual Box设置双网卡

一、硬件 1.为虚拟机添加网卡2.配置网卡二、软件 3.获取mac地址 命令:ip link [root@vbox network-scripts]# ip link 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000link/loopback 00:00:00:00:00:00 brd…

简单逆向Java程序

前置 来源 这个程序是我同学编写的一个学生分数管理系统,我将对这个已经编译的程序进行测试、逆向,找出其中的问题,并进行改进。 运行环境macOS 15.4 IntelliJ IDEA 2024.2.3 OpenJDK 23.0.2 TomCat 11.0.4 Safari 15.4运行结果主要问题 在使用了这个程序之后,我发现了以下…

信息论概述

1 信息与消息 1.1 信息 1.1.1 信息的定义 信息是信息论中最基本、最重要的概念 香农信息的定义:信息是事物运动状态或存在方式的不确定描述 1.1.2 (香农)信息的度量样本空间:对于我们需要描述的事物中,事物可能存在不同的状态,即事物展现出来的多种状态。那么为了便于形容事…

JUC并发—12.ThreadLocal源码分析

大纲 1.ThreadLocal的特点介绍 2.ThreadLocal的使用案例 3.ThreadLocal的内部结构 4.ThreadLocal的核心方法源码 5.ThreadLocalMap的核心方法源码 6.ThreadLocalMap的原理总结1.ThreadLocal的特点介绍 (1)ThreadLocal的注释说明 (2)ThreadLocal的常用方法 (3)ThreadLocal的使用…

前端Vue创建

一、创建Vue项目二、导入idea 复制景区 三、设置main.js点击查看代码 import Vue from vue import App from ./App.vue import ElementUI from element-ui; import element-ui/lib/theme-chalk/index.css; import ./assets/golbal.css; import axios from axios; // 正确的模块…