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)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • Statement 和 PreparedStatement之间的关系和区别

    Statement 和 PreparedStatement之间的关系和区别关系:PreparedStatement继承自Statement,都是接口 区别:PreparedStatement可以使用占位符,是预编译的,批处理比Statement效率高表示预编译的SQL语句的对象。接口:publicinterfacePreparedStatementextendsStatement之间的继承关系SQL语句被预编译并存储在PreparedStatement对象中。然后可以使用此对象多次高效地执行该语句。注:用于设置IN参数值的设置方法(setShort

    2022年4月28日
  • 一阶倒立摆的PID_简单旋转装置

    一阶倒立摆的PID_简单旋转装置  我做PID算法的背景和经历:本人电子信息科学与技术专业,现在是一名大三的学生,对控制方向颇感兴趣,刚上大学时听到实验室老师说PID算法,那年在暑假集训准备全国电子设计竞赛,我正在练习做一个以前专科的题目,帆板角度控制系统,还不懂PID是个什么玩意,老师让我把PID加到这个题目里。当时给了一些电子版的一些教程,但是没看懂。。。。。。。后来对四旋翼很感兴趣,想弄一架玩玩再亲自写程序做一架,买了PI…

    2022年8月18日
  • Java架构师尼恩_java的面试宝典

    Java架构师尼恩_java的面试宝典加架构师尼恩免费领!专题01:JVM面试题(卷王专供+史上最全+2022面试必备)-V2专题02:Java算法面试题(卷王专供+史上最全+2022面试必备)-V2专题03:Java基础面试题(卷王专供+史上最全+2022面试必备)-V2专题04:架构设计面试题(卷王专供+史上最全+2022面试必备)-V2专题05:Spring面试题__专题06:SpringMVC__专题07:Tomcat面试题(卷王专供+史上最全+2022面试必备)-V2专题0

    2022年9月20日
  • excel VLOOKUP函数的用法

    excel VLOOKUP函数的用法

    2021年12月8日
  • jmeter性能测试步骤入门_jmeter接口性能测试

    jmeter性能测试步骤入门_jmeter接口性能测试原文转自:https://blog.csdn.net/lovesoo/article/details/78579547ApacheJMeter是一款纯java编写负载功能测试和性能测试开源工具软件。相比Loadrunner而言,JMeter小巧轻便且免费,逐渐成为了主流的性能测试工具,是每个测试人员都必须要掌握的工具之一。本文为JMeter性能测试完整入门篇,从Jmeter下载安装到编写一个完整…

    2022年10月4日
  • 冈萨雷斯《数字图像处理》第3版课后习题[通俗易懂]

    冈萨雷斯《数字图像处理》第3版课后习题[通俗易懂]第3章3.6原题:试解释为什么离散直方图均衡技术一般不能得到平坦的直方图?答:假设有一副图像,共有像素个数为n=MN(M行N列),像素灰度值取值范围为(0~255),那么该图像的灰度值的个数为L

    2022年8月2日

发表回复

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

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