什么是CICD?

什么是CICD?传统的应用发布模式如果你经历体验过传统的应用发布,你可能就会觉得CICD有足够吸引你的地方,反之亦然。一般一个研发体系中都会存在多个角色:开发、测试、运维。当时我们的应用发布模式可以能是…

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

什么是CICD?

传统的应用发布模式

什么是CICD?

如果你经历体验过传统的应用发布,你可能就会觉得CICD有足够吸引你的地方,反之亦然。一般一个研发体系中都会存在多个角色:开发、测试、运维。当时我们的应用发布模式可以能是这样的:

  • 「开发团队」在开发环境中完成软件开发,单元测试,测试通过,提交到代码版本管理库;

  • 「开发同学」通知运维同学项目可以发布了,然后运维同学下载代码进行打包和构建,生成应用制品;

  • 「运维同学」使用部署脚本将生成的制品部署到测试环境,并提示测试同学可以进行产品的测试;

  • 「测试同学」开始进行手动、自动化测试,测试完成后提醒运维同学可以进行预生产环境部署;

  • 「运维同学」开始进行预生产环境部署,然后测试同学进行测试,测试完成后,开始部署生产环境。

当然我描述的可能只是其中的一部分,手动操作很多、出现的问题很多。上面看似很流畅的过程,其实每次构建或发布都可能会出现问题。未对每次提交验证、构建环境不一致:开发人员本地测试成功后提交代码,运维同学下载代码进行编译却出现了错误。

「存在的问题:」

  1. 「错误发现不及时」: 很多错误在项目的早期可能就存在,到最后集成的时候才发现问题;

  2. 「人工低级错误发生」: 产品和服务交付中的关键活动全都需要手动操作;

  3. 「团队工作效率低」: 需要等待他人的工作完成后才能进行自己的工作;

  4. 「开发运维对立」: 开发人员想要快速更新,运维人员追求稳定,各自的针对的方向不同。

经过上述问题我们需要作出改变,如何改变?

什么是CICD

什么是CICD?

软件开发的连续方法基于自动执行脚本,以最大程度地减少在开发应用程序时引入错误的机会。 从开发新代码到部署新代码,他们几乎不需要人工干预,甚至根本不需要干预。


它涉及到在每次小的迭代中就不断地构建,测试和部署代码更改,从而减少了基于错误或失败的先前版本开发新代码的机会。

此方法有三种主要方法,每种方法都将根据最适合您的策略的方式进行应用。

持续集成 CI(Continuous Integration)

什么是CICD?

在传统软件开发过程中,集成通常发生在每个人都完成了各自的工作之后。在项目尾声阶段,通常集成还要痛苦的花费数周或者数月的时间来完成。持续集成是一个将集成提前至开发周期的早期阶段的实践方式,让构建、测试和集成代码更经常反复地发生。

开发人员通常使用一种叫做CI Server的工具来做构建和集成。持续集成要求史蒂夫和安妮能够自测代码。分别测试各自代码来保证它能够正常工作,这些测试通常被称为单元测试(Unit tests)。

代码集成以后,当所有的单元测试通过,史蒂夫和安妮就得到了一个绿色构建(Green Build)。这表明他们已经成功地集成在一起,代码正按照测试预期地在工作。然而,尽管集成代码能够成功地一起工作了,它仍未为生产做好准备,因为它没有在类似生产的环境中测试和工作。

CI是需要对开发人员每次的代码提交进行构建测试验证。确定每次提交的代码都是可以正常编译测试通过的。在没有持续集成服务器的时候,我们可以写一个程序来监听版本控制系统的状态,当出现了push动作则触发相应的脚本运行编译构建等步骤。现在有了专业的持续集成服务器后,我们借助持续集成服务器来实现版本控制系统中代码提交触发构建测试等验证步骤。

持续合并开发人员正在开发编写的所有代码的一种做法。通常一天内进行多次合并和提交代码,从存储库或生产环境中进行构建和自动化测试,以确保没有集成问题并及早发现任何问题。

「开发人员提交代码的时候一般先在本地测试验证,只要开发人员提交代码到版本控制系统就会触发一条提交流水线,对本次提交进行验证。」

持续交付 CD (Continuous Delivery)

什么是CICD?

Continuous Delivery (CD) 持续交付是持续集成的延伸,将集成后的代码部署到类生产环境,确保可以以可持续的方式快速向客户发布新的更改。如果代码没有问题,可以继续手工部署到生产环境中。

「持续交付CD」:是基于持续集成的基础上,将集成后的代码自动化的发布到各个环境中测试(DEV TEST UAT STAG),确定可以发布生产版本。这里我们可以借用制品库实现制品的管理,根据环境类型创建对应的制品库。「一次构建,到处运行」

  • 开发环境发布:我们可以将开发环境产出的制品部署进行测试,没有问题后上传到测试环境的制品库中。

  • 测试环境发布:此时通知测试人员可以进行测试环境发布测试,获取测试环境制品库中的制品,发布到测试环境验证。验证通过将制品上传到预生产环境制品库。

  • 预生产环境发布:获取预生产环境制品,进行部署测试。测试成功后可以将制品上传到生产库中。

  • 手动部署生产环境。

持续交付是超越持续集成的一步。不仅会在推送到代码库的每次代码更改时都进行构建和测试,而且,作为附加步骤,即使部署是手动触发的,它也可以连续部署。此方法可确保自动检查代码,但需要人工干预才能从策略上手动触发更改的部署。

持续部署 CD(Continuous Deploy)

什么是CICD?

如果真的想获得持续交付的好处,应该尽早部署到生产环境,以确保可以小批次发布,在发生问题时可以轻松排除故障。于是有了持续部署。

通常可以通过将更改自动推送到发布系统来随时将软件发布到生产环境中。持续部署 会更进一步,并自动将更改推送到生产中。类似于持续交付,持续部署也是超越持续集成的进一步。不同之处在于,您无需将其手动部署,而是将其设置为自动部署。部署您的应用程序完全不需要人工干预。

「持续部署CD」:是基于持续交付的基础上,将在各个环境经过测试的应用自动化部署到生产环境。其实各个环境的发布过程都是一样的。应用发布到生产环境后,我们需要对应用进行健康检查、添加应用的监控项、 应用日志管理。

我们通常将这个在不同环境发布和测试的过程叫做部署流水线, 持续部署是在持续交付的基础上,把部署到生产环境的过程自动化。

什么是CICD?

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

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

(0)
上一篇 2022年5月24日 下午4:20
下一篇 2022年5月24日 下午4:20


相关推荐

  • 清空kafka_kafka的topic

    清空kafka_kafka的topic1.问题描述使用kafka-topics–delete命令删除topic时并没有真正的删除,而是把topic标记为:“markedfordeletion”,导致重新创建相同名称的Topic时报错“alreadyexists”。2.问题复现1.登录Kafka集群所在的服务器,创建一个test的topic[root@cdh1~]#kafka-topics–create…

    2022年8月31日
    5
  • Vue(5)计算属性computed

    Vue(5)计算属性computed前言一般情况下属性都是放到data中的,但是有些属性可能是需要经过一些逻辑计算后才能得出来,那么我们可以把这类属性变成计算属性。比如以下:<divid="example&quot

    2022年7月29日
    9
  • JavaScript计时器函数用法

    JavaScript计时器函数用法文章出自个人博客 amp amp lt amp amp gt 转载请申明 Javascript 中和大多数语言一样 存在计时函数 使某语句或函数不用立即执行 可以延时设定的时间值之后再执行 setTimeout 方法这个函数表示括号中的代码 延时指定时间后再执行 格式为 setTimeout function time 其中 time 的单位是毫秒 例如 functionfx

    2025年7月1日
    5
  • ireport 分页_sql组内分组

    ireport 分页_sql组内分组1、创建订单表et_order,并插入数据2.创建订单明细表et_order_detail,并插入数据3.不分组显示,将字段放入detail部分预览效果4.按照订单ID分组打印报表展示,点击模板名称,然后右键选择addreportgroup5.创建分组名称和分组字段6.分组包含了3部分,头部。明细。尾部,标题想要每张纸都显示,则需要放在pageheader块中7.最终效果…完美的达到了自己需要的效果。…

    2025年10月18日
    4
  • Postgresql+Springboot yml基本使用[通俗易懂]

    Postgresql+Springboot yml基本使用[通俗易懂]一、Postgresql介绍PostgreSQL是一种特性非常齐全的自由软件的对象-关系型数据库管理系统(ORDBMS),是以加州大学计算机系开发的POSTGRES,4.2版本为基础的对象关系型数据库管理系统。POSTGRES的许多领先概念只是在比较迟的时候才出现在商业网站数据库中。PostgreSQL支持大部分的SQL标准并且提供了很多其他现代特性,如复杂查询、外键、触发器、视图、事务完整性、多版本并发控制等。同样,PostgreSQL也可以用许多方法扩展,例如通过增加新的数据类型、函数、操作符、聚集函

    2025年7月14日
    4
  • pycharm配置git上传代码到github

    pycharm配置git上传代码到githubpycharm 上传代码到 github 呆呆的猫的博客 CSDN 博客 pycharm 上传代码到 github 超级详细的 GitBash 使用教程 01 下载 安装 适合小白 goog man 的博客 CSDN 博客 gitbash 下载

    2025年8月19日
    5

发表回复

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

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