CICD简介[通俗易懂]

CICD简介[通俗易懂]CI/CD​CI/CD的出现改变了开发和测试人员发布软件的方式。​传统的软件开发和交付方式在迅速变得过时。过去的敏捷时代里,大多数公司的软件发布周期是每月、每季度甚至每年,而在现在DevOps时代,每周、每天甚至每天多次都是常态。当SaaS(软件即服务)成为业界主流后尤其如此,您可以轻松地动态更新应用程序,而无需强迫用户下载更新组件。很多时候,用户甚至都不会注意到正在发生变化。开发团队通过软件交付流水线(Pipeline)实现自动化,以缩短交付周期,大多数团队都有自动化流程

大家好,又见面了,我是你们的朋友全栈君。

CI/CD

​ CI/CD 的出现改变了开发和测试人员发布软件的方式。

​ 传统的软件开发和交付方式在迅速变得过时。过去的敏捷时代里,大多数公司的软件发布周期是每月、每季度甚至每年,而在现在 DevOps 时代,每周、每天甚至每天多次都是常态。当 SaaS(软件即服务) 成为业界主流后尤其如此,您可以轻松地动态更新应用程序,而无需强迫用户下载更新组件。很多时候,用户甚至都不会注意到正在发生变化。开发团队通过软件交付流水线(Pipeline)实现自动化,以缩短交付周期,大多数团队都有自动化流程来检查代码并部署到新环境。

CI是什么?

在这里插入图片描述

持续集成

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

​ 持续集成强调开发人员提交了新代码之后,立刻自动的进行构建、(单元)测试。根据测试结果,我们可以确定新代码和原有代码能否正确地集成在一起。

持续集成的目的

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

​ 持续集成过程中很重视自动化测试验证结果,对可能出现的一些问题进行预警,以保障最终合并的代码没有问题。

持续集成的作用

  • 代码库存越是积压,就越得不到生产检验,积压越多,代码间交叉感染的概率越大,下个发布(release)的复杂度和风险越高,持续集成可以保证团队开发人员提交代码的质量,减轻了软件发布时的压力;
  • 持续集成中的任何一个环节都是自动完成的,无需太多的人工干预,有利于减少重复过程以节省时间、费用和工作量;
  • 及早的发现代码中的问题,及早解决,代码越早推送(PUSH)出去,用户能越早用到,快就是商业价值;

特点

  • 它是一个自动化的周期性的集成测试过程,从检出代码、编译构建、运行测试、结果记录、测试统计等都是自动完成的,无需人工干预;
  • 需要有专门的集成服务器来执行集成构建;
  • 需要有代码托管工具支持;

CD是什么?

​ CI/CD 中的“CD”指的是持续交付和/或持续部署,这些相关概念有时会交叉使用。两者都事关管道后续阶段的自动化,但它们有时也会单独使用,用于说明自动化程度。

​ 持续交付(Continuous delivery)指的是,频繁地将软件的新版本,交付给质量团队或者用户,以供评审。如果评审通过,代码就进入生产阶段。

​ 持续交付可以看作持续集成的下一步。它强调的是,不管怎么更新,软件是随时随地可以交付的。持续交付通常是指开发人员对应用的更改会自动进行错误测试并上传到存储库(如 GitHub或容器注册表),然后由运维团队将其部署到实时生产环境中。这旨在解决开发和运维团队之间可见性及沟通较差的问题。因此,持续交付的目的就是确保尽可能减少部署新代码时所需的工作量。

​ 持续部署(另一种“CD”)指的是自动将开发人员的更改从存储库发布到生产环境,以供客户使用。它主要为了解决因手动流程降低应用交付速度,从而使运维团队超负荷的问题。持续部署以持续交付的优势为根基,实现了管道后续阶段的自动化。

​ 归根结底,我们没必要纠结于这些语义,您只需记得 CI/CD 其实就是一个流程(通常形象地表述为管道),用于实现应用开发中的高度持续自动化和持续监控。因案例而异,该术语的具体含义取决于 CI/CD 管道的自动化程度。许多企业最开始先添加 CI,然后逐步实现交付和部署的自动化(例如作为[云原生应用]的一部分)。

CICD实现过程
工厂里的装配线以快速、自动化、可重复的方式从原材料生产出消费品。同样,软件交付管道以快速、自动化和可重复的方式从源代码生成发布版本。如何完成这项工作的总体设计称为“持续交付”(CD)。启动装配线的过程称为“持续集成”(CI)。确保质量的过程称为“持续测试”,将最终产品提供给用户的过程称为“持续部署”

实现流程

​ 1、运维管理员创建gitlab项目,创建Jenkins项目

​ 2、开发人员将code提交到对应的gitlab中(可按分支触发)

​ 3、gitlab通过webhook触发对应Jenkins项目

​ 4、进入CI环节:将code集成进标准的docker镜像中,并进行测试;

​ 集成及测试成功,则将集成后的镜像上传至仓库中;

集成或测试失败,则结束本次Jenkins,并将原因通过邮件发送给开发者与运维管理员。

​ 5、进入CD环节:

​ 通过Ansible将CI集成成功的镜像部署到已定义的所有机子中,并进行测试。

​ 如测试通过完成本次部署,如测试失败将判定该项目是否为第一次部署的;

​ 如该项目不是第一次部署的,则滚回到上一版本的容器,并将原因通过邮件发送给运维管理员。

如测试失败将判定该项目是否为第一次部署的;

​ 如该项目不是第一次部署的,则滚回到上一版本的容器,并将原因通过邮件发送给运维管理员。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/132370.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • MYCCL复合特征码定位器及其使用教程[通俗易懂]

    MYCCL复合特征码定位器及其使用教程[通俗易懂]复合特征码辅助定位工具MyCCLby:Tanknight——————————-  自从CCL问世以来,特征码修改已经成为了对付杀毒软件的常用手法,但是所谓魔高一尺,道高一丈杀毒软件开始使用多重复合特征码来对付特征码修改就是说只有你同时改掉程序所有的守护特征码此程序才不被杀。  所以本程序的作用是进行多重特征…

    2022年10月26日
    0
  • 计算机与打印机未连接,win7系统无法打印提示似乎未连接打印机的恢复步骤

    计算机与打印机未连接,win7系统无法打印提示似乎未连接打印机的恢复步骤win7系统使用久了,好多网友反馈说win7系统无法打印提示似乎未连接打印机的问题,非常不方便。有什么办法可以永久解决win7系统无法打印提示似乎未连接打印机的问题,面对win7系统无法打印提示似乎未连接打印机到底该如何解决?其实只需要首先我们需要检查一下打印机的驱动是否正常,右键点击桌面上的“此电脑”图标,在弹出菜单中选择“属性”菜单项,这时会打开windows10系统的系统窗口,点击左侧边栏的…

    2022年6月12日
    44
  • pycharm虚拟环境与本地环境区别_pycharm自带python吗

    pycharm虚拟环境与本地环境区别_pycharm自带python吗    Python的版本众多,在加上适用不同版本的PythonPackage。这导致在同时进行几个项目时,对库的依赖存在很大的问题。这个时候就牵涉到对Python以及依赖库的版本管理,方便进行开发,virtualenv就是用来解决这个问题的。下面介绍使用PyCharm创建VirtualEnvironment的方法。    PyCharm可以使用virtualenv中的功能来创建虚拟环境。Py…

    2022年8月27日
    2
  • 做网站-mysql表字段设计

    做网站-mysql表字段设计

    2021年10月31日
    34
  • CWnd的派生类-3、CDialog类

    CWnd的派生类-3、CDialog类

    2021年8月11日
    68
  • verilog ifdef_verilog define

    verilog ifdef_verilog define注意:feof判断文件结束是通过读取函数fread/fscanf等返回错误来识别的,故而判断文件是否结束应该是在读取函数之后进行判断。比如,在while循环读取一个文件时,如果是在读取函数之前进行判断,则如果文件最后一行是空白行,可能会造成内存错误。https://blog.csdn.net/Chauncey_wu/article/details/902897491.打开文件  int…

    2025年6月1日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号