CI/CD相关概念学习

news2024/11/19 5:42:25

文章目录

  • CI/CD相关概念学习
    • 前言
    • CI/CD相关概念介绍
      • 集成地狱
      • 持续集成
      • 持续交付
      • 持续部署
      • Devops
    • CI/CD相关应用介绍
      • Jenkins
      • Tekton Pipelines
      • Spinnaker
      • Travis CI
      • GoCD

CI/CD相关概念学习

image-20231117174806575

前言

本文主要是介绍一些 CI/CD 相关的概念,通过阅读本文你将快速了解 CI/CD 是什么、CI/CD的作用、以及DevOps与 CI/CD 的关系。与此同时,你也将了解与 CI/CD 相关的一些应用,当然本文着重是概念介绍,关于 CI/CD 应用的使用介绍到时候会写在另外一篇文章中,敬请期待(●’◡’●)
PS:由于我也是第一次接触 CI/CD 这些概念,个人理解上可能存在一定的不恰当,如果您发现了,还请即时告知博主,万分感谢

CI/CD相关概念介绍

  • CI/CD是什么意思

    CI/CD 是一种通过在应用开发阶段引入自动化来频繁向客户交付应用的方法。CI/CD 的核心概念是持续集成、持续交付和持续部署。作为一种面向开发和运维团队的解决方案,CI/CD 主要针对在集成新代码时所引发的问题(亦称:“集成地狱”)。

    个人理解:CI/CD 就是一种软件开发方式,目标是频繁利用自动化脚本提高集成、部署效率

集成地狱

  • 什么是集成地狱

    集成地狱(Inherit Hell)是一个专业性的术语,用于描述在软件开发中,由于集成过程的复杂性和困难而导致的问题。

    集成炼狱通常发生在大型项目中,涉及多个团队和多个代码库的情况下。在这种情况下,各个团队独立开发和测试不同的功能模块,然后需要将它们集成到一个统一的整体中。这个集成过程可能会面临各种挑战,例如:

    1. 版本冲突:不同的团队可能使用不同的技术栈和依赖库,导致版本冲突和兼容性问题。
    2. API 不稳定:在开发过程中,API 可能会频繁变动,导致其他团队的代码无法正常工作。
    3. 缺乏一致性:由于开发团队的独立性,代码风格、命名规范和工程结构可能不一致,导致集成时出现问题。
    4. 集成测试问题:由于集成过程的复杂性,很难进行全面和完整的集成测试,导致潜在的问题无法被及时发现和解决。
    5. 缺乏自动化:如果集成过程需要手动操作和人工干预,将会增加出错的可能性,延长交付时间。

    ……

    以上这些集成过程中遇到的种种问题,都可以统一称之为集成地狱,集成地狱常常会导致开发周期延长、软件质量下降、项目进度滞后以及团队之间的协作问题。为了避免集成炼狱,团队可以采取一些措施,例如:

    1. 频繁集成:团队应该频繁地进行集成,以尽早发现和解决集成问题。
    2. 自动化集成:使用自动化构建、测试和部署工具,减少人为错误和提高效率。
    3. 规范和标准化:制定统一的编码规范、API设计规范和工程结构,以确保团队之间的一致性。
    4. 协作和沟通:加强团队之间的沟通和协作,及时解决集成问题和冲突。

    ……

持续集成

  • 什么是持续集成

    持续集成(Continuous Integration,简称 CI)是一种软件开发实践,旨在通过频繁地将代码变更集成到共享存储库中,然后自动构建和测试这些变更,以确保团队能够快速、高效地交付高质量的软件。

    个人理解:持续集成是一种软件开发方式,它要求一边开发一边频繁通过自动化脚本将变更集成到主分支中

  • 为什么需要持续集成

    持续集成可以提高软件的质量、快速定位发现问题、减少集成冲突和风险、提高软件开发效率。

    现代应用开发的目标是让多位开发人员同时处理同一应用的不同功能。但是,如果企业安排在一天内将所有分支源代码合并在一起(称为“合并日”),最终可能造成工作繁琐、耗时,而且需要手动完成。这是因为当一位独立工作的开发人员对应用进行更改时,有可能会与其他开发人员同时进行的更改发生冲突。如果每个开发人员都自定义自己的本地集成开发环境(IDE),而不是让团队就一个基于云的 IDE 达成一致,那么就会让问题更加雪上加霜。

    持续集成(CI)要求开发人员频繁地(有时甚至每天)将代码更改合并到共享分支或“主干”中。一旦开发人员对应用所做的更改被合并,系统就会通过自动构建应用并运行不同级别的自动化测试(通常是单元测试和集成测试)来验证这些更改,确保这些更改没有对应用造成破坏。这意味着测试内容涵盖了从类和函数到构成整个应用的不同模块。如果自动化测试发现新代码和现有代码之间存在冲突,可以更加轻松地快速修复这些错误。

持续交付

  • 什么是持续交付

    持续交付(Continuous Delivery,简称 CD)是一种软件开发实践,旨在通过自动化的构建、测试和部署流程,确保软件可以随时以可靠的方式交付给用户,但与持续部署不同,持续交付并不要求每次成功的构建都自动部署到生产环境中。

    个人理解:持续交付和持续集成一样,都是一种软件开发的方式,也可以理解为一种思想,他要求我们要有一个随时可以部署到生产环境的代码库

  • 为什么需要持续交付

    确保拥有一个可随时部署到生产环境的代码库,提高交付的效率。

  • 什么是持续部署

    持续部署(Continuous Deployment,简称 CD)是持续交付的一部分,指的是一种自动化的软件发布流程,其中每次成功的构建都会自动部署到生产环境中,从而使新功能或修复很快地被用户使用。

    个人理解:持续部署是持续交付的最后的一个步骤,他要求通过自动化脚本将已测试过的性功能活修复发布到生产环境中

持续部署

  • 什么需要持续部署

    提高部署效率、快速发现定位问题、降低应用的部署风险。

    持续部署,可以确保新功能能够很快上线被用户使用,用于越早使用,就能越快发现问题,从而越早改进,这样也能够帮助程序员快速定位问题,这一点的重要性我平常开发中深有体会,比如我开发一个比较大的功能,如果我是全部开发完后再来测试,可能看起来省时间,但是最终可能一旦出现问题,你需要定位很久,如果没开发一个小功能都测试一下,这样看着浪费时间,但是能够快速定位问题,反而能够更加节省时间,这也是一条开发的最佳实践。

Devops

  • 什么是DevOps

    DevOps(DevelopmentOperations,开发运维),是一种抽象的思想(类似与三层架构),它关注的是开发和运维之间的合作、沟通和整合。

    个人理解:从这个名字也可以看出来,他就是让开发与运维相结合,开发人员了解并参与运维,运维人员了解并参与开发,使得两者的沟通更加容易,开发人员可以开发出更好运维的应用,运维人员可以根据开发的应用制定更好的运维方案。现在市面上也有相应的 DevOps 开发工程师,薪资一般比单一的开发要高,毕竟会的多一点,学习成本更高

  • CI/CD 和 DevOps的联系

    DevOps 旨在打破开发和运维之间的壁垒,促进团队之间的协作和整合。它关注整个应用生命周期,包括需求分析、设计、开发、测试、部署和运维。DevOps 鼓励团队成员之间的沟通、协作和反馈,以便更好地满足客户需求,提高软件质量和交付速度。

    而 CI/CD 是一种实现 DevOps 理念的具体方法。通过持续集成、持续交付和持续部署,CI/CD 将开发、测试和部署过程自动化,以便更快速、更可靠地向客户交付软件。CI/CD 关注的是如何频繁地构建、测试和部署软件,以便及时发现和修复问题,同时提高软件质量和交付速度。

    因此,可以说 CI/CD 是 DevOps 的一种具体实践,它通过自动化方法来践行 DevOps 的核心理念,即开发和运维之间的紧密合作和协作。

CI/CD相关应用介绍

Jenkins

Jenkins是一个Java开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成。它前身是Hudson,2009年,甲骨文收购Sun并继承了Hudson代码库,2011年年初,甲骨文和开源社区关系破裂,该项目分为两个独立的项目:Hudson:由甲骨文继续管理; Jenkins:由大部分原始人员组成管理。

PS:是目前市场上最主流的 CI/CD 工具

Tekton Pipelines

Tekton Pipelines 基于Kubernetes并支持声明式构建。它使用自定义资源(Custom Resource)来定义构建任务,并使用Kubernetes API进行交互。

在Tekton Pipelines中,任务(Task)是核心概念,它表示一个可执行的工作单元。任务可以包含多个步骤(Step),每个步骤可以执行不同的操作,例如下载代码、运行测试、构建镜像等。任务还可以依赖其他任务,并可以通过输出(Output)和输入(Input)与其他任务进行交互。

除了任务之外,Tekton Pipelines还支持工作区(Workspace)的概念。工作区为任务提供了一个隔离的环境,可以用于存储任务所需的文件和资源。每个任务都可以使用不同类型的工作区,例如源代码工作区、构建工作区和测试工作区等。

Spinnaker

Spinnaker是一个开源的多云持续交付平台,旨在将产品快速且持续地部署到多种云平台上。它定位于将发布和各个云平台解耦,以将部署流程流水线化,从而降低平台迁移或多云平台部署应用的复杂度。

Spinnaker支持Google、AWS EC2、Microsoft Azure、Kubernetes和OpenStack等云平台,并且可以无缝集成其他持续集成(CI)流程,如git、Jenkins、Travis CI、Docker registry、cron调度器等。它具有以下主要功能:

  1. 集群管理:可以管理多云环境下的k8s集群。
  2. 部署管理:即常说的持续交付。

Spinnaker通过内置的部署策略(例如红色/黑色和金丝雀部署)利用云中的不变基础架构,创建和部署不可变映像以实现更快的部署、更容易的回滚以及消除难以调试的配置漂移问题。此外,Spinnaker还可以通过托管交付在上述功能的基础上提供更高级别的体验。

Travis CI

Travis CI是一个持续集成服务,它与Github紧密集成,可以在代码提交时自动运行测试和构建,并且可以将新代码集成到主干。它支持多种语言和框架,并且提供丰富的文档和社区支持。Travis CI还提供免费的公开仓库,可以用于托管开源项目。

GoCD

GoCD是一个开源的持续集成和持续部署工具,由ThoughtWorks开发并维护。它基于模型构建,采用了一种分阶段的模型来描述工作流。GoCD支持各种任务,如构建、测试和部署等,这些任务可以在不同的阶段中执行,并且可以并行或串行执行。

GoCD的核心概念包括:

  1. Pipeline:工作流是由一系列阶段(Stage)组成的Pipeline,每个阶段可以包含多个任务(Task)。
  2. Stage:阶段是一组任务的集合,这些任务按照顺序执行,通常用于表示一个完整的业务流程或功能。
  3. Task:任务是Pipeline中的基本执行单元,可以是一个命令行任务、shell脚本、Maven命令、NAnt脚本等。
  4. Agent:代理是用于执行任务的实际机器,GoCD可以与多个代理通信,并将任务分配给它们执行。
  5. Material:材料是用于触发Pipeline执行的文件或代码变更,通常与版本控制系统(如Git)集成。

GoCD还提供了可视化界面,可以方便地查看Pipeline的执行情况和日志,以及进行任务管理和配置。此外,GoCD还支持插件机制,可以扩展其功能和集成其他工具。

总之,GoCD是一个功能强大的持续集成和持续部署工具,适用于各种规模的项目和团队。它通过模型构建和可视化界面提供了灵活的工作流管理和任务执行能力。


参考资料

  • 一文带你看懂 CI/CD 是什么? (redhat.com)
  • Jenkins 构建CI/CD(一看就会)咸蛋黄派的博客-CSDN博客
  • DevOps到底是什么意思? - 知乎 (zhihu.com)

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

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

相关文章

腾讯云4核8G服务器性能如何多少钱一年?

腾讯云服务器4核8G配置优惠价格表,轻量应用服务器和CVM云服务器均有活动,云服务器CVM标准型S5实例4核8G配置价格15个月1437.3元,5年6490.44元,轻量应用服务器4核8G12M带宽一年446元、529元15个月,腾讯云百科txybk.com分…

在前端开发中,什么是CDN(Content Delivery Network)?它的作用是什么?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

Python实验项目7 :tkinter GUI编程

(1)利用tkinter 制作界面,效果图如下: from tkinter import * # winTk() for i in range(1,20):Button(width5,height10,bg"black" if i%20 else"white").pack(side"left") win.geometry("8…

“可信区块链运行监测服务平台TBM发展研讨会”将于11月23日在北京召开

为推动区块链治理与创新,积极推进信任科技生态体系建设,中国信息通信研究院、中国移动设计院联合区块链服务网络(BSN)发展联盟共同发起建立了可信区块链运行监测服务平台(TBM)。 TBM平台通过对区块链系统的…

idea显示pom.xml文件漂黄警告 Dependency maven:xxx:xxx is vulnerable

场景: idea警告某些maven依赖包有漏洞或者依赖传递有易受攻击包,如下: 解决: 1、打开idea设置,找到 File | Settings | Editor | Inspections 2、取消上述两项勾选即可

Verilog基础:仿真时x信号的产生和x信号对于各运算符的特性

相关阅读 Verilog基础https://blog.csdn.net/weixin_45791458/category_12263729.html?spm1001.2014.3001.5482 信号爆x也许是所有IC人的噩梦,满屏的红色波形常让人头疼不已,但x信号的产生原因却常常只有几种,只要遵循一定的代码规范&#…

开源与闭源软件的辩论:对大模型技术发展的影响

目录 前言1 开源软件的优缺点1.1 开源软件的优点1.2 开源软件的缺点和挑战 2 闭源软件的优缺点2.1 闭源软件的优点2.2 闭源软件的缺点和挑战 3 大模型发展会走向哪一边结语 前言 近期,特斯拉CEO马斯克公开表示:OpenAI不该闭源,自家首款聊天机…

JVM判断对象是否存活之引用计数法、可达性分析

目录 前言 引用计数法 概念 优点 缺点 可达性分析 概念 缺点: 扩展: 1.GC Roots 概念 2.STW (Stop the world) 前言 JVM有两种算法来判断对象是否存活,分别是引用计数法和可达性分析算法,针对可达性分析算法STW时间长、…

Python入门学习篇(一)——注释变量输入输出

1 注释 1.1 作用 a 方便他人和自己阅读代码 b 告诉编译器这部分内容是不用执行的。1.2 单行注释 # 注释内容1.3 多行注释(引号) 1.3.1 三对双引号 """ 注释内容 """1.3.2 三对单引号 注释内容 1.4 pycharm快捷键使用 ctrl/ 多行注释(以# …

基于SSM的中小型企业财务管理设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

【413.等差数列划分】

目录 一、题目描述二、算法原理三、代码实现 一、题目描述 二、算法原理 三、代码实现 class Solution { public:int numberOfArithmeticSlices(vector<int>& nums) {int nnums.size();if(n<3) return 0;vector<int> dp(n);dp[2]dp[1]dp[0]0;if(nums[2]-nu…

vulnhub靶场—matrix-breakout-2-morpheus靶机

一&#xff0c;实验环境 靶机ip&#xff1a;192.168.150.131攻击机ip&#xff1a;192.168.150.130 二&#xff0c;信息收集 arp-scan -l 扫描网段&#xff0c;寻找靶机ip 使用工具nmap进行端口扫描 nmap -A -T4 -p- 192.168.150.131 通过信息收集发现了靶机有80和81这两个…

【2021集创赛】基于arm Cortex-M3处理器与深度学习加速器的实时人脸口罩检测 SoC

团队介绍 参赛单位&#xff1a;深圳大学 队伍名称&#xff1a;光之巨人队 指导老师&#xff1a;钟世达、袁涛 参赛队员&#xff1a;冯昊港、潘家豪、慕镐泽 图1 团队风采 1. 项目简介 新冠疫情席卷全球&#xff0c;有效佩戴口罩可以极大程度地减小病毒感染的风险。本项目开发…

腾讯云4核8G服务器配置价格表,轻量和CVM标准型S5实例

腾讯云4核8G服务器S5和轻量应用服务器优惠价格表&#xff0c;轻量应用服务器和CVM云服务器均有活动&#xff0c;云服务器CVM标准型S5实例4核8G配置价格15个月1437.3元&#xff0c;5年6490.44元&#xff0c;轻量应用服务器4核8G12M带宽一年446元、529元15个月&#xff0c;腾讯云…

一文看分布式锁

为什么会存在分布式锁&#xff1f; 经典场景-扣库存&#xff0c;多人去同时购买一件商品&#xff0c;首先会查询判断是否有剩余&#xff0c;如果有进行购买并扣减库存&#xff0c;没有提示库存不足。假如现在仅存有一件商品&#xff0c;3人同时购买&#xff0c;三个线程同时执…

The import xxx.xxx.xxxx is never used

CTRL SHIFT O 就完成了&#xff0c;懒人&#xff0c;代码没洁癖啊&#xff0c;几千上万的代码没用的。

Vue 路由缓存 防止路由切换数据丢失

在切换路由的时候&#xff0c;如果写好了一丢数据在去切换路由在回到写好的数据的路由去将会丢失&#xff0c;这时可以使用路由缓存技术进行保存&#xff0c;这样两个界面来回换数据也不会丢失 在 < router-view >展示的内容都不会被销毁&#xff0c;路由来回切换数据也…

HP惠普暗影精灵9笔记本电脑OMEN by HP Transcend 16英寸游戏本16-u0000原厂Windows11系统

惠普暗影9恢复出厂开箱状态&#xff0c;原装出厂Win11-22H2系统ISO镜像 下载链接&#xff1a;https://pan.baidu.com/s/17ftbBHEMFSEOw22tnYvPog?pwd91p1 提取码&#xff1a;91p1 适用型号&#xff1a;16-u0006TX、16-u0007TX、16-u0008TX、16-u0009TX、16-u0017TX 原厂系…

【AI视野·今日CV 计算机视觉论文速览 第279期】Tue, 31 Oct 2023

AI视野今日CS.CV 计算机视觉论文速览 Tue, 31 Oct 2023 Totally 165 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computer Vision Papers SimMMDG: A Simple and Effective Framework for Multi-modal Domain Generalization Authors Hao Dong, Ismail Nejjar, …

【力扣】从零开始的动态规划

【力扣】从零开始的动态规划 文章目录 【力扣】从零开始的动态规划开头139. 单词拆分解题思路 45. 跳跃游戏 II解题思路 5. 最长回文子串解题思路 1143. 最长公共子序列解题思路 931. 下降路径最小和解题思路 开头 本力扣题解用5题来引出动态规划的解题步骤&#xff0c;用于本…