DevOps 教程 (4) - CI/CD 整合

news2024/9/26 3:24:34

在本第四章的"DevOps 教程"系列中,我们将介绍CI/CD整合的概念和实践。我们会介绍DevOps所带来的好处,包括团队协作、开发效率和产品交付速度的显著提升。

我们还将讨论在DevOps中的不同角色,并理解每个角色在持续集成和持续交付中的关键作用。通过了解这些角色,我们将更好地理解如何构建一个高效的DevOps团队,并实现更好的研发效能。

最后,我们将介绍在生产环境中常见闭环流水线的流程。

 本系列将探讨 通过 OCI DevOps Services 自动化构建OKE的整个流程,介绍它们的流程和作用:

  • 基础架构流程 && OCI 代码仓库使用
  • Build Pipeline (CI)
  • Deployment Pipeline (CD)
  • 整合 CI/CD

通过本系列的文章,您将了解如何在 OCI DevOps Services 中搭建自动化流水线,提高应用开发和交付的效率,同时充分发挥 OCI 云原生服务的作用。

每一次流水线的执行,都是一个完整的业务闭环,确保每次上线都是有迹可循且及时反馈的过程。

1 什么是 DevOps

维基百科定义: DevOps是一套将软件开发和信息技术操作相结合的实践,旨在缩短系统开发生命周期,打破开发与维护之间的壁垒,从而提供透明且高质量的交付过程。

2 DevOps带来什么

1. 变更可控

在DevOps实践中,变更的可控性是关键因素之一。通过使用版本控制系统,团队可以追踪每次变更,确保代码更改得到透明、可控的管理。同时,通过自动化测试和集成,确保每次变更都是对某个业务请求的响应,从而提高变更的质量和可追溯性。

2. 任务自助

可视化流水线设计与配置使得任务自助成为可能。团队成员可以通过简单的界面设计和配置流水线,从而降低了操作的技术门槛。流水线的持续运行保障了安全、方便和快捷的交付流程,同时也大大提高了效率,减少了人工失误的可能性,使工程师能够更专注于创新和问题解决。

3. 内建质量

强制的代码扫描是内建质量的一部分,它通过自动化工具来检测潜在的代码质量问题,降低技术债务带来的风险。通过在流水线中嵌入质量门禁,可以在每个阶段都强制执行质量控制,从而确保交付的产品具有高质量的代码。

4. 质量改进

质量改进不仅仅是发现问题,更是通过持续的度量和分析,找到问题的根本原因并加以改进。将质量门禁嵌入流水线,可以在每个变更点上执行质量检查,从而及时发现和解决问题,降低技术债务。通过实施大屏看板,团队可以实时监控流水线的运行状况和业务指标。建立度量指标持续修改机制,能够根据团队的需求灵活调整度量标准,从而更好地适应业务的变化。这有助于推动研发效率和交付质量的持续提升,同时也为全团队提供了一个共享的可视化工具,促进更好的协作和决策。

3 角色收益

1 产品经理

  • 更快的交付速度: DevOps实践使产品经理能够更快地推出新功能和改进,加速产品交付周期。
  • 更频繁的变更速度: 快速迭代和部署意味着产品经理可以更频繁地进行变更,满足市场需求和客户反馈。

2 开发人员

  • 采用自动化减少重复性工作: 自动化流水线可以自动执行重复性和繁琐的任务,使开发人员从手动工作中解放出来。
  • 更多时间的开发创新: 减少手动工作和快速的交付周期为开发人员提供了更多时间专注于创新和新功能的开发。
  • 更高的代码质量: 强制的代码扫描和内建质量控制确保了高质量的代码交付。

3 运维人员

  • 更快的修复速度: 快速的部署和自动化流程使运维人员能够更迅速地响应和修复问题。
  • 更低的故障率: 自动化测试和持续集成确保了高质量的代码,从而减少了潜在故障的发生率。
  • 管理复杂度下降: 自动化流程和一致性的环境配置减少了系统和应用的管理复杂度。

4 测试人员

  • 可度量的指标增进了解决问题的速率: 持续集成和度量指标使测试人员能够更迅速地定位和解决问题。
  • 更快的发现问题,避免线上问题: 自动化测试和持续集成确保了更早、更频繁的问题发现,从而降低了线上问题的风险。

5 客户

  • 更好的体验: 更快的交付和迭代周期意味着客户可以更快地体验到新功能和改进,提升整体体验。
  • 更快的迭代: 快速的交付和反馈循环使客户能够更快地享受到产品的不断改进。

4 研发效能大屏

1 语言栈统计

  • 目的: 统计项目中使用的编程语言及其比例,帮助团队了解项目的技术栈分布,为技术决策提供数据支持;

2 代码提交量

  • 目的: 跟踪代码提交的数量,帮助团队了解开发活跃度和工作进展;

3 代码特征统计

  • 目的: 分析代码质量和结构,帮助团队了解项目的代码健康状况。通过各种提交规则帮忙我们更好的了解代码当前特性,如 feat, fix, perf 等前缀特性;

4 开发者提交量统计

  • 目的: 跟踪团队中各个开发者的贡献度,了解团队成员的工作情况。

5 开发者提交部门

  • 目的: 将开发者的提交按照部门进行分类,帮助团队了解各个部门的工作分布和贡献。

5 常见闭环流水线

每一次流水线的执行,都是一个完整的业务闭环,确保每次上线都是有迹可循且及时反馈的过程。

1 集成工单

  • 创建工单: 针对每一次上线,通过集成工单(JIRA, 禅道..)系统创建相应的工单,记录上线的目的、内容和计划。
  • 工单分配: 将工单分配给负责的团队或成员,明确责任和任务。

2 邮件通知

  • 通知流程: 建立邮件,微信或企业通讯通知流程,确保关键的上线信息能够迅速、准确地传达给相关团队成员。

3 公司业务标准

  • 遵循标准: 每次上线都应符合公司的业务标准和最佳实践,确保代码、功能和交付流程符合公司的质量和安全标准。
  • 持续改进(CI): 业务标准应当是一个持续改进的框架,通过每次上线的经验教训,不断更新和优化标准。

4 业务闭环

  • 追踪上线过程: 利用集成的工单,通知和DevOps系统追踪上线过程,确保每个阶段的任务都得到完成。

5 及时反馈和工单闭环

  • 监控和报警: 配置监控系统,及时发现潜在问题并触发报警,确保对问题的迅速响应。
  • 工单闭环: 任何上线引起的问题都应该生成新的工单,确保问题被记录、分析和解决,形成工单的完整闭环。

6 总结

这个系列的四次分享为您介绍了Oracle Cloud Infrastructure上利用OCI DevOps Services构建自动化流水线的关键步骤。从构建基础架构、使用OCI代码仓库,到创建自动化构建和部署流水线,再到CI/CD的整合,系列内容提供了直接可操作的指南。

关于推进运维产品的个人观点:

推进运维产品在一些公司较为困难,主要因为运维产品更倾向于以工具的形态存在,而非完整的产品。此外,对于规模较小的团队,构建和落地运维产品需要更大的决心和高水平的运维能力。因此,对于有将运维产品化的运维,建议寻找更大更标准的运维团队…

🚀 炸鸡物料库 🚀

🔍 内容定位: IT技术领域,云计算、云原生、DevOps 和 AI 等相关的技术资讯、实践和经验分享。面向开发、系统和云计算,提供实用的技术内容。

🎯 目标受众: 面向开发者、系统管理员和云计算从业者,提供实用的技术内容。

🗓️ 更新频率:每周更新,每次分享都为您带来有价值的技术内容。

🤝 互动与反馈: 鼓励读者留言、评论,有问题随时提问,我们将积极互动并提供帮助。

💌 订阅方式: 扫描二维码或搜索“炸鸡物料库”关注,不错过每一篇精彩内容。

🌐 合作与分享: 如果您有技术分享或合作计划,欢迎联系我们,共同成长!

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

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

相关文章

AI助力农作物自动采摘,基于YOLOv8全系列【n/s/m/l/x】参数模型开发构建作物生产场景下番茄采摘检测计数分析系统

去年十一那会无意间刷到一个视频展示的就是德国机械收割机非常高效自动化地24小时不间断地在超广阔的土地上采摘各种作物,专家设计出来了很多用于采摘不同农作物的大型机械,看着非常震撼,但是我们国内农业的发展还是相对比较滞后的&#xff0…

【C语言期末】职工管理系统

本文资源:https://download.csdn.net/download/weixin_47040861/88805231 1.题目要求 职工管理系统 问题描述:对单位的职工进行管理,包括插入、删除、查找、排序等功能。 要求:职工对象包括姓名、性别、出生年月、工作年月、学历…

【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul

第四章_Eureka服务注册与发现 1.Eureka基础知识 1.1Eureka工作流程-服务注册 1.2Eureka两大组件 2.单机Eureka构建步骤 IDEA生成EurekaServer端服务注册中心,类似于物业公司 EurekaClient端cloud-provider-payment8081将注册进EurekaServer成为服务提供者provide…

将结构体中的浮点数数据提取出来并发送至串口屏显示

1、由于项目中定义了一个结构体如下: typedef struct {uint16_t number;uint16_t LocationData;uint16_t PersonData; // _calendar_obj calendar; // uint16_t LiuLiang_Value;float LiuLiang_Value;_calendar_obj calendar_records; } Frame; 现需要将其中的flo…

新手从零开始学习数学建模论文写作(美赛论文临时抱佛脚篇)

本文记录于数学建模老哥视频的学习过程中。b站视频:http://【【零基础教程】老哥:数学建模算法、编程、写作和获奖指南全流程培训!】https://www.bilibili.com/video/BV1kC4y1a7Ee?p50&vd_sourceff53a726c62f94eda5f615bd4a62c458 目录…

一分钟教你搭建steam幻兽帕鲁服务器,稳定不卡

如何自建幻兽帕鲁服务器?基于阿里云服务器搭建幻兽帕鲁palworld服务器教程来了,一看就懂系列。本文是利用OOS中幻兽帕鲁扩展程序来一键部署幻兽帕鲁服务器,阿里云百科aliyunbaike.com分享官方基于阿里云服务器快速创建幻兽帕鲁服务器教程&…

2024年适合进入股市吗?北京想开股票账户找哪家证券公司交易佣金费用最低?

股市规则是指股票市场中的一系列规则和制度,用于监管和管理股票交易。以下是一些常见的股市规则: 证券法律法规:股市规则的基础是国家的证券法律法规,包括证券法、公司法等,用于规范股票发行、交易和上市等方面的法律规…

【紧耦合新范式】Think-on-Graph:解决大模型在医疗、法律、金融等垂直领域的幻觉

Think-on-Graph:解决大模型在医疗、法律、金融等垂直领域的幻觉 Think-on-Graph 原理ToG 算法步骤:想想再查,查查再想实验结果 论文:https://arxiv.org/abs/2307.07697 代码:https://github.com/IDEA-FinAI/ToG Think…

AI专题:2023年AI创意营销趋势白皮书

今天分享的是AI系列深度研究报告:《AI专题:2023年AI创意营销趋势白皮书》。 (报告出品方:蓝色光标集团销博特) 报告共计:65页 2022年10月 Stabili ty AI获得1.01亿美元融资 开源人工智能公司 StabilityA…

STM32CAN2进入bus off 模式

工作遇到的问题记录 无人机CAN2整个进不了中断,通过查看寄存器判定出CAN节点进入了bus off mode 为何进入bus off ,最后通过示波器看到整个CAN2总线波形就不对,总线出现了错误 Busoff的产生是一定是因为节点自身识别到自己发送错误&#xff…

Konva中滚动问题

现在有两个group,想要的效果时拖动绿的group时,红色group按照相同方向移动同样距离 可以在绿的group的拖动方法中 通过move方法 移动红色的group

零基础Vue框架上手;git,node,yarn安装

项目搭建环境: git安装:Git - 安装 Git (git-scm.com)(官网) 下载路径:Git - Downloading Package (git-scm.com);根据自己电脑下载相对应的安装包 ​ 点next ​ 点next,点到最后安装就行。…

人工智能基础-matplotlib基础

绘制图形 import numpy as np x np.linspace(0, 10, 100) y np.sin(x) import matplotlib as mpl import matplotlib.pyplot as plt plt.plot(x, y) plt.show()绘制多条曲线 siny y.copy() cosy np.cos(x) plt.plot(x, siny) plt.plot(x, cosy) plt.show()设置线条颜色 …

2024年第四届能源与环境工程国际会议(CoEEE 2024) | Ei Scopus检索

会议简介 Brief Introduction 2024年第四届能源与环境工程国际会议(CoEEE 2024) 会议时间:2024年5月22日-24日 召开地点:意大利米兰 大会官网:www.coeee.org CoEEE 2024将围绕“能源与环境工程”的最新研究领域而展开,为研究人员、…

ES6-数组的解构赋值

一、数组的解构赋值的规律 - 只要等号两边的模式相同,左边的变量就会被赋予对应的值二、数组的解构赋值的例子讲解 1)简单的示例(完整的解构赋值) 示例 //基本的模式匹配 // a,b,c依次和1,2&#xff0c…

CSS 外边距合并、塌陷和BFC

外边距合并 CSS中的外边距合并指的是当两个相邻元素都设置了上下外边距时,它们之间会发生重叠。这种现象被称为"margin collapsing"(外边距合并)或者"margin collapse"(外边距塌陷)。 可以看出上…

【PTA浙大版《C语言程序设计(第4版)》编程题】练习7-4 找出不是两个数组共有的元素(附测试点)

目录 输入格式: 输出格式: 输入样例: 输出样例: 代码呈现 测试点 给定两个整型数组,本题要求找出不是两者共有的元素。 输入格式: 输入分别在两行中给出两个整型数组,每行先给出正整数N(≤20),随后是N个整数&a…

【DDD】学习笔记-代码模型的架构决策

代码模型属于软件架构的一部分,它是设计模型的进化与实现,体现出了代码模块(包)的结构层次。在架构视图中,代码模型甚至会作为其中的一个视图,通过它来展现模块的划分,并定义运行时实体与执行视…

Leetcode—203. 移除链表元素【简单】

2024每日刷题(一零九) Leetcode—203. 移除链表元素 实现代码 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(n…

ffmpeg 时间裁剪之-ss -t与滤镜中trim=start=*:duration=*的区别和联系

背景 工作中遇到的呗。记下来贡着。 滤镜重置时间戳:setptsPTS-STARTPTS 在FFmpeg中,setptsPTS-STARTPTS是一种用于调整视频时间戳(PTS)的滤镜表达式。这个表达式通常用于视频编辑和处理过程中,用于修改视频的时间轴…