当前位置: 首页 > news >正文

什么年代了,还不会 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 给团队带来了改变:开发人员不仅可以解决积压的问题,还可以处理非关键缺陷,让产品更加完美。

相关文章:

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

目录 什么是 CI/CD? CI/CD 对业务有哪些好处? 一:确保卓越的代码质量 二:更快的发布速度 → 更快的交付 三:自动化降低成本 四:故障隔离 五:简化回滚 六:持续反馈 七&#…...

centos 7.7 安装Python-3.7.4

一、安装PYTHON 编译依赖包 1.1 首先安装gcc编译器,gcc有些系统版本已经默认安装,通过 gcc --version 查看,没安装的先安装gcc, yum -y install gcc glibc make1.2 安装其它依赖包,(注:不要缺…...

git的用法

目录 一、为什么需要git 二、git基本操作 2.1、初始化git仓库 2.2、配置本地仓库的name和email 2.3、认识工作区、暂存区、版本库 三、git的实际操作 3.1 提交文件 3.2 查看git状态以及具体的修改 3.3 git版本回退 git reset 3.1 撤销修改 四、git分支管理 4.…...

管道在Vue和Angular中的作用及React的替代方案

管道在Vue和Angular中的作用及React的替代方案 前言管道起源管道特点 前端中管道概念和作用概念作用 React关于管道的替代方案Vue和Angular管道的区别 前言 本文主要讲解管道在Vue和Angular中有哪些作用以及React对于管道概念的替代方案是什么。 管道起源 计算机中的Pipline…...

计算机基础知识57

前后端数据传输的编码格式(contentType) # 我们只研究post请求方式的编码格式: get请求方式没有编码格式-- index?useranme&password get请求方式没有请求体,参数直接在url地址的后面拼接着 # 有哪些方式可以提交post请求:f…...

Flutter 小技巧之 3.16 升级最坑 M3 默认适配技巧

如果要说 Flutter 3.16 升级里是最坑的是什么?那我肯定要说是 Material 3 default (M3)。 倒不是说 M3 bug 多,也不是 M3 在 3.16 上使用起来多麻烦,因为虽然从 3.16 开始,MaterialApp 里的 useMaterial3 …...

激光雷达与惯导标定 | Lidar_IMU_Init : 编译

激光雷达与惯导标定:Lidar_IMU_Init 编译 功能包安装安装ceres-solver-2.0.0 (注意安装2.2.0不行,必须要安装2.0.0) LI-Init是一种鲁棒、实时的激光雷达惯性系统初始化方法。该方法可校准激光雷达与IMU之间的时间偏移量和外部参数…...

进程池,线程池与跨进程数据共享爬取某岸网图片

看教程的时候看到一个,生产者跟消费者的概念比较有意思,但是给的代码有问题无法正常运行,于是我就捣鼓了一下。 基本概念就是: 生产者: 一个进程获取网页没页的图片连接(主进程…...

【 图片加载】Vue前端各种图片引用

文章目录 一、图片作为js常量(常作为配置项的值 )1、在线链接2、本地图片 二、图片img标签1、一般的src2、动态的src用require3、src可以接收二进制文件blob(如后端返回的、a-upload传的图片) 三、背景图片 一、图片作为js常量(常…...

thinkphp6生成PDF自动换行

composer安装 composer require tecnickcom/tcpdf 示例 use TCPDF;public function info($university,$performance,$grade,$major){//获取到当前域名$domain request()->domain();//实例化$pdf new TCPDF(P, mm, A4, true, UTF-8, false);// 设置文档信息$pdf->SetCr…...

wpf devexpress实现输入验证使用验证规则

打开此项目 目标是一个registration form行为像google registration form。打开Google registration form 研究它的行为。当form是第一次显示,它的“Register”按钮应该启动;编辑器没有提示任何输入错误。输入First Name编辑器字段,清理输入…...

Vue表单的整体处理

在前端的处理中&#xff0c;表单的处理永远是占高比例的。在BOMDOMjs的时候是这样&#xff0c;在Vue的时候也是这样。Vue的表单处理做了特别的优化&#xff0c;如值绑定、数据验证、错误提示、修饰符等。 表单组件的示例&#xff1a; <script setup lang"ts">…...

探索实人认证API:保障在线交互安全的关键一步

前言 在数字化时代&#xff0c;随着人们生活的日益数字化&#xff0c;各种在线服务的普及&#xff0c;安全性成为用户体验的至关重要的一环。特别是在金融、电商、社交等领域&#xff0c;确保用户身份的真实性显得尤为重要。而实人认证API作为一种先进的身份验证技术&#xff…...

XDR 网络安全:技术和最佳实践

扩展检测和响应&#xff08;XDR&#xff09;是一种安全方法&#xff0c;它将多种保护工具集成到一个统一的集成解决方案中。它为组织提供了跨网络、端点、云工作负载和用户的广泛可见性&#xff0c;从而实现更快的威胁检测和响应。 XDR的目标是提高威胁检测的速度和准确性&…...

【如何学习Python自动化测试】—— 警告框处理

7 、 警告框处理 在 web 中&#xff0c;除了上面提到的元素和操作之外&#xff0c;还有就是页面的提示框的处理了&#xff0c;页面的警告框通常分为这几类 js&#xff1a;alert 、 confirm 以及 prompt&#xff0c;这些警告框&#xff0c;我们都可以通过 switch_to_alert()来处…...

Jenkins Ansible 参数构建

首先在Jenkins中创建自由项目 在web端配置完成后在另一台机子上下载nginx 在gitlab端创建项目并创建文件配置代码 在有Jenkins的机器上下载Ansible [rootslave1 ~]# yum -y install epel-release [rootslave1 ~]# yum -y install ansible再进入下载nginx机器中克隆gitlab项目…...

第十五届蓝桥杯(Web 应用开发)模拟赛 1 期-大学组(详细分析解答)

目录 1.动态的Tab栏 1.1 题目要求 1.2 题目分析 1.3 源代码 2.地球环游 2.1 题目要求 2.2 题目分析 2.3 源代码 3.迷惑的this 3.1 题目要求 3.2 题目分析 3.3 源代码 4.魔法失灵了 4.1 题目要求 4.2 题目分析 4.3 源代码 5.燃烧你的卡路里 5.1 题目要求 5.2…...

2023亚太杯数学建模B题思路+模型+代码+论文

2023亚太地区数学建模A题思路&#xff1a;开赛后第一时间更新&#xff0c;获取见文末 名片 2023亚太地区数学建模B题思路&#xff1a;开赛后第一时间更新&#xff0c;获取见文末 名片 2023亚太地区数学建模C题思路&#xff1a;开赛后第一时间更新&#xff0c;获取见文末 名片…...

GitHub 报告发布:TypeScript 取代 Java 成为第三受欢迎语言

GitHub发布的2023年度Octoverse开源状态报告发布&#xff0c;研究围绕AI、云和Git的开源活动如何改变开发人员体验&#xff0c;以及在开发者和企业中产生的影响。报告发现了三大趋势&#xff1a; 1、生成式AI的广泛应用&#xff1a; 开发人员大量使用生成式AI进行构建。越来越…...

配置hikari数据库连接池时多数据源不生效

1.原始配置&#xff0c;改造前&#xff1a; spring:# 配置数据源信息datasource:dynamic:#设置默认的数据源或者数据源组,默认值即为masterprimary: masterstrict: truedatasource:#这里采用了配置文件取值的方式&#xff0c;可以直接替换为数据库连接master:url: jdbc:postgr…...

C++_核心编程_多态案例二-制作饮品

#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为&#xff1a;煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例&#xff0c;提供抽象制作饮品基类&#xff0c;提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...

基于FPGA的PID算法学习———实现PID比例控制算法

基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容&#xff1a;参考网站&#xff1a; PID算法控制 PID即&#xff1a;Proportional&#xff08;比例&#xff09;、Integral&#xff08;积分&…...

rknn优化教程(二)

文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK&#xff0c;开始写第二篇的内容了。这篇博客主要能写一下&#xff1a; 如何给一些三方库按照xmake方式进行封装&#xff0c;供调用如何按…...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包&#xff1a;import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序&#xff08;自然排序和定制排序&#xff09;Arrays.binarySearch()通过二分搜索法进行查找&#xff08;前提&#xff1a;数组是…...

23-Oracle 23 ai 区块链表(Blockchain Table)

小伙伴有没有在金融强合规的领域中遇见&#xff0c;必须要保持数据不可变&#xff0c;管理员都无法修改和留痕的要求。比如医疗的电子病历中&#xff0c;影像检查检验结果不可篡改行的&#xff0c;药品追溯过程中数据只可插入无法删除的特性需求&#xff1b;登录日志、修改日志…...

Java - Mysql数据类型对应

Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...

【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】

1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件&#xff08;System Property Definition File&#xff09;&#xff0c;用于声明和管理 Bluetooth 模块相…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序

一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...

AI编程--插件对比分析:CodeRider、GitHub Copilot及其他

AI编程插件对比分析&#xff1a;CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展&#xff0c;AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者&#xff0c;分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...

如何在最短时间内提升打ctf(web)的水平?

刚刚刷完2遍 bugku 的 web 题&#xff0c;前来答题。 每个人对刷题理解是不同&#xff0c;有的人是看了writeup就等于刷了&#xff0c;有的人是收藏了writeup就等于刷了&#xff0c;有的人是跟着writeup做了一遍就等于刷了&#xff0c;还有的人是独立思考做了一遍就等于刷了。…...