什么年代了,还不会 CI/CD 么?

目录

什么是 CI/CD?

CI/CD 对业务有哪些好处?

一:确保卓越的代码质量

二:更快的发布速度 → 更快的交付

三:自动化降低成本

四:故障隔离

五:简化回滚

六:持续反馈

七:最佳透明度和问责制

八:提高 MTTR(平均修复时间)

九:监控指标数据

十:减少 Backlog 中的非重要缺陷


本文来源:about.gitlab.com

作者:Valerie Silverthorne

译者:极狐(GitLab) 市场部内容团队

数字时代,几乎每家公司都涉及软件业务。竞争对手、客户、投资人及员工都要求更快速地更新软件。因此,越来越多的企业拥抱现实,并为实现更高效的持续集成和交付上投入更多。

以下 10 个理由进一步阐述了为何企业需要 CI/CD。

什么是 CI/CD?


CI/CD 包括了CI(Continuous Integration,持续集成)和 CD(Continous Delivery,持续交付)两步流程,通过使用自动化力量大大简化代码研发和交付流程

  • CI 使代码集成和版本控制等研发任务更加高效,从而让软件更快上线,投入生产;

  • CD 使软件测试和部署自动化。

简而言之,CI/CD 共同构成了现代软件开发的强大引擎,让企业获益良多。

CI/CD 对业务有哪些好处?


以下是企业采用 CI/CD 的十大理由:

一:确保卓越的代码质量

在 GitLab 2021 年全球 DevSecOps 调研报告中,受访者表示实践 DevOps 的原因之一是提升代码质量,即团队需要 DevOps 功能之一是 CI/CD。因为 CI/CD 流水线提供测试自动化,研发几乎可以实时了解代码问题。“快速失败” 理念意味着团队不会在错误代码上浪费时间或资源;并且研发人员在转战其他项目时,也不会被无休止的 “修复” 请求所困扰。

节约时间、节约金钱,而且研发人员也不需要频繁进行上下文切换,换来的是 win-win!

二:更快的发布速度 → 更快的交付

对 CI/CD 收益持怀疑态度的人,请听全球金融巨头高盛公司的故事:高盛的技术部门从双周构建一次,演变到了每天构建 1000 次以上。

当讨论加速软件发布频率时,统一的 CI/CD 流水线像一个涡轮发动机。代码发布越快,就可以开发更多新代码,然后发布,以此往复。业务底线是:当成功的 CI/CD 流水线发挥作用时,昂贵的开发人员资源不会被闲置。

三:自动化降低成本

无需人工干预软件研发过程,则可以节省时间和金钱。这也就是为什么自动化是成功实践 DevOps 的基础。 

CI/CD 自动化了源代码管理、版本控制、部署机制,还有很多测试工作。其中,测试可以说是最重要的。在 GitLab 2021 年的调研中,测试被认为是发版延迟的罪魁祸首

发版延迟不仅会从成本、品牌、公共关系甚至声誉的角度影响企业,对于依赖快速上市时间的企业来说也是致命的。历史上,软件测试都是手动的,且非常耗时,这也是为什么企业通常一年或半年发版一次。在现如今,企业可以随时发布,而自动化软件测试是实现这一切的关键。

四:故障隔离

在 DevOps 和 CI/CD 获得关注之前,研发团队可能知道代码中存在问题,但却苦于得知问题的准确位置。

CI/CD 及自动化测试改变了这一切。研发人员可以轻易识别问题并进行故障隔离,显著提高生产效率

五:简化回滚

CI/CD 流水线给予研发人员快速试错和快速恢复的能力。

一个简单流程就可以将代码发布到生产环境,如果发生问题,简单回滚即可。这种代码简单回滚的能力,节约了团队时间、精力以及资源,并且能够快速修复问题代码。

六:持续反馈

作为 DevOps 平台的一部分,统一的 CI/CD 流程让团队中的每个人(包括业务利益相关者),都可以清楚获悉发生了什么、在哪儿发生以及将会出现什么问题。

这听起来很简单,但在现实中,能够提供统一工具窗口查看完整流程,是革命性的转变。

因为在过去,需要使用很多的工具来完成项目工作,以至于项目经理不得不在众多地方查看,甚至询问一众人来获取状态更新信息,研发和运维也有同样困扰。显然,这极大浪费了时间和资源,特别是在出现问题时。

七:最佳透明度和问责制

得益于持续反馈,CI/CD 流水线使得软件研发流程对业务侧完全透明。产品经理对项目状态一目了然,并根据需要追踪进度和跟踪责任。

八:提高 MTTR(平均修复时间)

得益于 CI/CD 流水线的可视化,DevOps 团队可以快速发现问题并进行快速修复。有一个关键指标衡量快速解决问题的能力:平均修复时间(MTTR)。MTTR 越好,DevOps 团队工作越高效,软件发版也越快

九:监控指标数据

团队和业务侧都需要知道在代码实际运行如何。在理想情况下,团队知道存在代码问题,并在终端用户感知到之前进行回滚。但在传统研发实践中,监控指标往往是缺失的。

CI/CD 流水线通过多种指标数据的持续反馈,让“理想”变为现实。访问指标数据不仅节省时间,也间接改进代码质量,没有组织希望与错误缠身的代码和性能不佳的应用程序相关联。

十:减少 Backlog 中的非重要缺陷

很明显,CI/CD 可以节约时间和金钱,让开发人员有时间去处理他们过往没有精力做的事情,比如回头去修复老代码中的问题,将其变得更加整洁和高效。

DevOps 和 CI/CD 给团队带来了改变:开发人员不仅可以解决积压的问题,还可以处理非关键缺陷,让产品更加完美。

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

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

相关文章

设计模式——行为型模式(二)

6.8 迭代器模式 6.8.1 概述 定义:提供一个对象来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示。 6.8.2 结构 迭代器模式主要包含以下角色: 抽象聚合(Aggregate)角色:定义存储、添加、删除聚合元素以及创建迭代器对象的接口。具体聚合(ConcreteAggreg…

C# Onnx PP-Vehicle 车辆分析(包含:车辆检测,识别车型和车辆颜色)

目录 效果 模型信息 mot_ppyoloe_s_36e_ppvehicle.onnx vehicle_attribute_model.onnx 项目 代码 下载 其他 C# Onnx PP-Vehicle 车辆分析(包含:车辆检测,识别车型和车辆颜色) 效果 模型信息 mot_ppyoloe_s_36e_ppvehi…

009 OpenCV 二值化 threshold

一、环境 本文使用环境为: Windows10Python 3.9.17opencv-python 4.8.0.74 二、二值化算法 2.1、概述 在机器视觉应用中,OpenCV的二值化函数threshold具有不可忽视的作用。主要的功能是将一幅灰度图进行二值化处理,以此大幅降低图像的数…

ASP.NET Core 启用CORS

浏览器的安全阻止一个域的本地页面请求另外不同域的本地页面,这个限制叫同源策略,这个安全特性用来阻止恶意站点从别的网站读取数据 例如假如我有一个页面叫A.html https://foo.example/A.html 现在页面A.html有一个ajax代码尝试读取B.html的HTML的源…

【PyQt】(自定义类)阴影遮罩

写了一个感觉有些用的小玩具。 用于给控件添加阴影遮罩(强调主控件的同时屏蔽其余控件的点击) 自定义阴影遮罩Mask: from PyQt5.QtCore import QPoint,QRect,Qt,QPoint,QSize from PyQt5.QtWidgets import QWidget,QLabel,QPushButton,QVBoxLayout from PyQt5.QtGu…

leetcode:合并两个有序链表

题目描述 题目链接:21. 合并两个有序链表 - 力扣(LeetCode) 题目分析 这个算法思路很简单:就是直接找小尾插 定义一个tail和head,对比两个链表结点的val,小的尾插到tail->next,如果一个链表…

每日一题:LeetCode-589.N叉树的前序遍历序列构造二叉树

每日一题系列(day 01) 前言: 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 &#x1f50e…

企业微信身份验证

本篇主要是在上一篇获取第三方凭证基础上,用户通过三方网站自定义授权登录后获取用户信息,以实现用户绑定登录功能。 构造第三方应用授权链接 如果第三方应用需要在打开的网页里面携带用户的身份信息, 第一步需要构造如下的链接来获取授权c…

马养殖场建设VR模拟实训教学平台具有灵活性和复用性

为保障养殖场生物安全,避免疫病传播,学生出入养殖场受时间和地域的限制, 生产实习多以参观为主,通过畜牧企业技术人员的讲解,学生被动了解生产过程。为了解决畜牧养殖实训难的问题,借助VR技术开展畜牧养殖虚…

通过云服务器部署JavaWeb项目

文章目录 搭建Java运行环境部署项目更改部分项目代码打包项目把war包上传到webapps目录下验证程序 搭建Java运行环境 搭建环境的部分比较复杂,为了让大家的思路更加清晰特别总结为一篇博客点击查看 部署项目 更改部分项目代码 打包项目 把war包上传到webapps目录…

大洋钻探系列之三IODP 342航次是干什么的?(下)

上文简要地介绍IODP342航次的总体情况,本文以航次1个钻孔(U1403)为例,更为详细地系统展示大洋钻探航次的工作和成果。 ​编辑​ 站位叠加多波束影像的成果图见下图,从图中的颜色效果可以看出,此多波束的成…

归并排序算法

文章目录 归并排序一、归并排序思路二、归并排序算法模板三、题目代码 归并排序 一、归并排序思路 二、归并排序算法模板 void merge_sort(int q[], int l, int r) {if (l > r) return;int mid l r >> 1;//中间值merge_sort(q, l, mid);merge_sort(q, mid 1, r);…

大数据分析与应用实验任务九

大数据分析与应用实验任务九 实验目的 进一步熟悉pyspark程序运行方式; 熟练掌握pysaprkRDD基本操作相关的方法、函数,解决基本问题。 实验任务 进入pyspark实验环境,打开命令行窗口,输入pyspark,完成下列任务&am…

Redis入门教程

1. 什么是NoSql NoSQL一词最早出现于1998年,是Carlo Strozzi开发的一个轻量、开源、不提供SQL功能的关系数据库。2009年,Last.fm的Johan Oskarsson发起了一次关于分布式开源数据库的讨论,来自Rackspace的Eric Evans再次提出了NoSQL的概念&am…

onnx导出报错 | IndexError: index_select(): Index is supposed to be a vector

解决方案: 在torch.onnx.export钟添加do_constant_foldingFalse,如下 torch.onnx.export(model,(None, text),text_fp32_onnx_path,input_names[text],output_names[unnorm_text_features],export_paramsTrue,opset_version13,verboseTrue,do_constant_…

编程参考 - C++ Code Review: 一个计算器的项目

GitHub - jroelofs/calc: Toy Calculator Toy Calculator 1,拿到一个project,第一眼看,没有配置文件,说明没有引入持续集成系统,continuous integration system。 2,然后看cmake文件,使用的子…

使用Python的turtle模块绘制钢铁侠图案

1.1引言: 在Python中,turtle模块是一个非常有趣且强大的工具,它允许我们以一个可视化和互动的方式学习编程。在本博客中,我们将使用turtle模块来绘制钢铁侠的图案。通过调用各种命令,我们可以引导turtle绘制出指定的图…

第十四章 控制值的转换 - 在DISPLAYLIST中投影值

文章目录 第十四章 控制值的转换 - 在DISPLAYLIST中投影值在DISPLAYLIST中投影值 第十四章 控制值的转换 - 在DISPLAYLIST中投影值 在DISPLAYLIST中投影值 对于 %String 类型(或任何子类)的属性,XML 投影可以使用 DISPLAYLIST 参数。 简单…

CrystalDiskInfo/CrystalDiskMark/DiskGenius系统迁移

CrystalDiskInfo 主要用于看硬盘的各种信息,包括但不限于硬盘通电时间、通电次数、硬盘好坏状态 CrystalDiskMark 主要用于测试硬盘的读写速度、连续读写速度 DiskGenius 主要用于通过U盘装操作系统后进行,磁盘分区,更改磁盘名、隐藏部分…