领导让我调研CI/CD,我给他看了这个

一、概念解释


CI/CD是指持续集成(Continuous Integration)和持续交付/持续部署(Continuous Delivery/Continuous Deployment)的缩写,是现代软件开发中的重要实践。它们旨在通过自动化和持续化的方式改善软件开发、测试和交付过程。

  1. CI(Continuous integration):持续集成,指的是频繁地将代码集成到主干
  2. CD(Continuous delivery):持续交付,指的是频繁地将软件的新版本交付给用户,以供评审
  3. CD(Continuous Deployment):持续部署,是持续交付的下一步,指的是代码通过评审后,自动部署到生产环境
  4. CT(Continuous Test):持续测试,保证上述3个流程质量的过程(通常也在CI中体现)

二、持续集成(CI)的好处


1、快速发现错误。每完成一点更新,就集成到主干,可以快速发现错误,定位错误也比较容易

2、防止分支大幅偏离主干。如果不是经常集成,主干又在不断更新,会导致以后集成的难度变大,甚至难以集成

三、持续集成(CI)的目的


让产品可以快速迭代,同时还能保持高质量。它的核心措施是,代码集成到主干之前,必须通过自动化测试。只要有一个测试用例失败,就不能集成

四、为什么我们做不了(持续交付)CD


首先要说明的是,这里的持续交付是针对搭建CI/CD体系而言。

为什么我们做不了持续交付,由于实际工作中,正式环境搭建CI/CD体系的不一定是质量团队甚至不会让质量团队去做,而质量团队搭建的也只是(持续集成)CI部分,以保障自动化测试提效作用。

不能做CD其中的原因一是公司上线流程就没有将这部分交给质量团队做,第二个原因就是嵌入式软件发布方式与互联网软件发布方式不同,所以基于目前的这种纯软件流程的(持续交付)CD方式不能实现我们产品的CD。

五、常见CI/CD工具


Jenkins、Travis CI、Circle CI、TeamCity、GitHub Actions等等

  1. Jenkins

    • 优点:开源、可定制性强、拥有丰富的插件生态系统、支持大规模部署
    • 缺点:需要较多的配置和管理、UI设计相对陈旧
  2. Travis CI

    • 优点:易于使用、针对GitHub仓库提供无缝集成、支持Linux和macOS环境
    • 缺点:免费版功能受限、不适用于私有项目
  3. CircleCI

    • 优点:云端托管、易于配置、支持Docker构建、适用于小型团队
    • 缺点:收费较高、限制较多
  4. GitLab CI/CD

    • 优点:集成于GitLab仓库、开源版本功能完备、支持自动DevOps流程
    • 缺点:企业版收费较高、不适用于非GitLab托管的项目
  5. TeamCity

    • 优点:功能强大、易于集成、支持多种构建工具
    • 缺点:商业软件,需要购买许可证
  6. GitHub Actions

    • 优点:集成于GitHub、免费版功能完备、便于与GitHub仓库集成
    • 缺点:新产品,部分功能可能尚未成熟

选择CI/CD工具时,从几点出发:

  1. 易于安装、使用
  2. 安装位置选择:云、本地、虚拟环境(k8s、docker)
  3. 最重要的一点,是否开源

选择Jenkins是满足了开源、本地部署、易于安装这几点条件的

六、持续集成(CI)的最小流程


 

七、可扩展环节


持续集成本质是流程自动化的体现,所以都是基于现有的手工流程修改完善出来的,完善的流程都是建立在上述最小流程之上的,通常扩展环节出现在三个位置:新建任务、构建前操作、构建后操作。

常见扩展环节有:流程定时任务化、任务串联(多个子任务合并成一个大任务)、增加构建前的代码静态扫描、代码审计、构建后的自动化测试、关联构建后的问题记录、bug上报等等。

实现这些扩展环节,离不开Jenkins提供的大量的插件,如代码静态扫描使用的Sonar、自动化测试报告查看用的Html Publisher、邮件发送用的Email Extension等等上千种。

八、几种搭建方法


1、本机搭建:将安装包下载至Windows电脑,进行启动,流程中所有环节均在本机执行

优点:

  1. 搭建过程相对简单,能够保证最基本使用
  2. 不需要申请服务器资源

缺点:

  1. 需要多端维护CI环境,一旦流程发生变换,使用端都需要进行修改,服务端部署则是一端维护,多端使用
  2. 不利于环境统一:编译环境、运行环境、测试执行环境
  3. 本地搭建,使用者想要接入这套系统需要每人搭建一套环境
  4. 需要保证电脑无休息运行

2、服务端搭建:将Jenkins安装在一个服务器上,作为Master节点,代码管理、编译、运行、测试执行分别按需扩展节点(Jenkins Slave),节点机可以是同Master节点相同的服务器,也可以是网络互通的Windows机器。

优点:

  1. 符合标准持续集成环境搭建方案
  2. 可以一端维护,多端使用
  3. 节点可扩展性高

缺点:

  1. 需要申请服务器资源
  2. 测试端需要和硬件连接的部分,只能使用Windows电脑作为Jenkins执行节点,需要考虑网络互通问题

3、局域网搭建:同搭建方式2,只是所有节点均为Windows电脑,需要保证所有电脑网络互通。

优点:

  1. 结合了搭建方式1和2的所有优点
  2. 网络互通,Jenkins节点可以灵活地使用Windows,对于需要对接硬件测试的可以无缝衔接

3)Jenkins Master在Windows、Windows上的虚拟机、服务器上均能搭建

缺点:

Jenkins Master在Windows搭建时,需保证电脑无休息运行

九、实例展示


1、任务列表展示

2、自动化测试结果概览展示

 

3、任务构建流程-基础配置项展示

 

4、任务构建流程-源码管理配置项展示

 

5、任务构建流程-构建前操作配置项展示

 

6、任务构建流程-构建配置项展示

 

7、任务构建流程-构建后操作配置项展示

 

CI/CD的实施可以带来以下好处:

  • 更快的交付周期:通过自动化流程,加速软件的构建、测试和部署过程,从而更快地交付软件。
  • 更高的质量:通过频繁的集成、自动化测试和部署,降低软件缺陷的风险。
  • 更好的团队协作:减少手动操作,增强团队之间的沟通和合作。
  • 更好的反馈机制:及时发现和解决问题,提高开发人员对代码质量和系统状态的认识。

总之,CI/CD是一种通过自动化、持续化和频繁化的方式来改善软件开发、测试和交付流程的实践,有助于提高软件交付的效率和质量。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

注册表Windows兼容性设置(AppCompatFlags)

属性 - 兼容性 EXE文件属性中有兼容性标签,当有些老版本软件不能正常运行时经常会调整这里的设置。 image.png 上面的所有选项都写在注册表中,其中“更改所有用户的设置”保存在HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\AppC…

零售品牌做好差旅报销管理,真的能省钱

一年一度的“618”如期而至,甚至启动更早了。 各大厂商宣布取消延用了十多年的预售机制,主打“现货开卖”,充分回归“消费者价值”。 零售品牌给消费者省钱,更要给自己省钱。而这前提是充分了解“钱花在哪了”、“怎么花更合理”: ● 商业化BD、促销、营销等市场活动频繁,差…

操作系统实战(四)(linux+C语言)

目录 实验目的 前提知识 实验题目 题目分析 实验程序 头文件 头文件实现 核心代码文件 (各类进程) 生产者 抽烟者A 抽烟者B 抽烟者C makefile文件 实验运行 运行结果分析 总结 实验目的 加深对并发协作进程同步与互斥概念的理解&…

nginx与nginx-rtmp-module安装

nginx与nginx-rtmp-module安装 画了好几天图,实在有些乏力,找点有意思的事情做做 觉得视频流传输挺有意思,B站找了些视频,但感觉有些大同小异,讲得不是很清楚 FFmpeg/RTMP/webRTC丨90分钟搞定直播逻辑-推流-流媒体服…

面向可复用性和可维护性的设计模式 课程学习总结

什么是设计模式 设计模式:在软件设计中给定上下文中常见问题的通用的、可重用的解决方案。 设计模式分类 1. 创建型模式——Creational patterns 关注对象创建的过程 1.1 工厂方法模式 定义用于创建对象的接口,但让子类决定要实例化哪个类。工厂方…

舞蹈工作室会员服务预约门店管理系统小程序的作用是什么

舞蹈涵盖少儿、街舞、芭蕾、拉丁等多个细分类目,舞蹈工作室除了商演外,内部还有学员培训教育等,提高营收和提升服务效率是商家一直需要思考的问题,线上化程度加深,需要满足客户个性化需求且快速完成流程。 运用【雨科…

乐游巴蜀,V你而来!苏州金龙海格新V系很“巴适”

成都,自古有“天府之国”之美誉,古老的城市人文与现代的摩登活力相交相融,加之令人垂涎的美食文化,共同造就了这里超强的旅游吸引力。2024年5月23日,以“用心前行,V你而来”为题的苏州金龙新V系客车推介会走…

基于若依的旅游推荐管理系统(spring boot+vue+mybatis+Ajax)

目录 一、项目目的 二、项目需求 1、功能模块分析 2、数据库表er图 三、部分界面展示 1、景点信息 2、旅游路线 3、地方美食管理 四、新颖点 1、旅游路线、景点和美食的联系 2、联系实现 3、地级选择器(省市二级) 五、总结 一、项目目的 随着…

数据恢复的救星!快速恢复手机数据的2个秘籍!

当我们的照片、视频、联系人、短信和应用程序丢失时,许多人可能会感到束手无策,无论是珍贵的照片、重要的工作文件还是个人的联系方式,一旦丢失,都可能带来极大的不便和困扰。但随着数据恢复技术的发展,我们有了更多的…

Spring - Spring Cache 缓存注解这样用,实在是太香了!

作者最近在开发公司项目时使用到 Redis 缓存,并在翻看前人代码时,看到了一种关于 Cacheable 注解的自定义缓存有效期的解决方案,感觉比较实用,因此作者自己拓展完善了一番后分享给各位。 Spring 缓存常规配置 Spring Cache 框架给…

Linux 基本使用和 web 程序部署云端

目录 1.Linux发行版 2.Linux常用命令 ls pwd cd touch mkdir cat rm cp mv man vim grep ps netstat 绝对路径 vs 相对路径 使用 tab 键补全 使用 ctrl c 重新输入 粘贴与复制快捷键 3.Linux环境搭建 环境搭建方式 使用云服务器 4.搭建Java部署环境 …

一步步实现知乎热榜采集:Scala与Sttp库的应用

背景 在大数据时代,网络爬虫技术发挥着不可或缺的作用。它不仅能够帮助我们快速地获取互联网上的信息,还能处理和分析这些数据,为我们提供深刻的洞察。知乎,作为中国领先的问答社区,汇聚了各行各业的专家和广大用户的…

30多万汉字词语押韵查询ACCESS\EXCEL数据库

押韵,也作“压韵”。作诗词曲赋等韵文时在句末或联末用同韵的字相押,称为押韵。诗歌押韵,使作品声韵和谐,便于吟诵和记忆,具有节奏和声调美。旧时押韵,要求韵部相同或相通,也有少数变格。现代新…

洪师傅代驾系统开发 支持公众号H5小程序APP 后端Java源码

代驾流程图 业务流程图 管理端设置 1、首页装修 2、师傅奖励配置 师傅注册后,可享受后台设置的新师傅可得的额外奖励; 例:A注册了师傅,新人奖励可享受3天,第一天的第一笔订单完成后可得正常佣金佣金*奖励比例 完成第二笔/第三笔后依次可得正常佣金佣金*奖励比例 完成的第四…

百川大模型拿下国产第一,AI助手「百小应」上线,比Kimi强不少

最近几天,国内 AI 创业公司正在连续刷新大模型的能力上限。 5 月 22 日,百川智能发布最新一代基座大模型 Baichuan 4,同时推出了首款 AI 助手「百小应」。 相较 1 月份发布的 Baichuan 3,新一代模型在各项能力上均有大幅提升&am…

三轴加速度计M-A352AD实现实时的动态监测

地震监测设备如何快速监测到地震波的发生?如何快速地将地震信号传输到系统或设备上,让人快速做出相应对策?如何在恶劣的环境下,仍能保持稳定可靠的监测?其核心之一就是采用了传感器技术和相关设备,我们可以在地震易发生区域或重点观察的区…

最早做“转化医学”的国货护肤品牌,发力了!

文章来自化妆品行业媒体青眼 作者小朱 放眼全球护肤市场,皮肤科学的力量正在前所未有地凸显,多个国际美妆巨头专门设立了皮肤科学部门,国内皮肤科医生参与护肤品牌创建也成为一股风潮。 据青眼不完全统计,近年来,至少…

UI控件与视图层次:探索界面的无限可能

[OC]UI学习笔记 文章目录 [OC]UI学习笔记视图和视图层次结构CGRectUILabelUIButtonUIView控件UIView的层级关系UIWindow定时器和视图移动UISwitch进度条和滑动条控件步进器和分栏控件警告对话框与等待指示器UITextField 视图和视图层次结构 Objective-C中的UI编程主要围绕视图…

WebGL在历史和考古重建中的应用

WebGL(Web Graphics Library)是一种基于JavaScript的API,用于在浏览器中呈现2D和3D图形。由于其强大的图形处理能力和广泛的兼容性,WebGL在历史和考古重建中的应用具有重要的意义。以下是WebGL在这一领域的主要应用和详细描述。北…

十大品牌落地台灯有用吗?护眼落地灯十大知名品牌

十大品牌落地台灯有用吗?落地台灯作为这几年家长很关注的家电/学生产品,家里有孩子或者是经常面对电子设备的人士,相信都会对其有所了解并且购买了落地台灯,但是还有些家长对落地台灯的认知不够深,以至于还没有给孩子安…