首页 > 其他分享 >什么是CI/CD

什么是CI/CD

时间:2023-05-30 10:33:54浏览次数:37  
标签:CI 部署 什么 持续 CD 交付 自动化

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

具体而言,CI/CD 可让持续自动化和持续监控贯穿于应用的整个生命周期(从集成和测试阶段,到交付和部署)。这些关联的事务通常被统称为“CI/CD 管道”,由开发和运维团队以敏捷方式协同支持,采用的方法不是 DevOps 就是站点可靠性工程(SRE)

通过红帽 Ansible 自动化平台简化 CI/CD 管道

缩略词 CI / CD 具有几个不同的含义。CI/CD 中的"CI"始终指持续集成,它属于开发人员的自动化流程。成功的 CI 表明应用代码的新更改会定期构建、测试并合并到共享存储库中。这种方法可以解决在一次开发中有太多应用分支,从而导致相互冲突的问题。

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

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

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

CI/CD的区别是什么

CI/CD 既可能仅指持续集成和持续交付构成的关联环节,也可以指持续集成、持续交付和持续部署这 3 项构成的关联环节。更为复杂的是,"持续交付"有时也包含了持续部署流程。

归根结底,我们没必要纠结于这些语义,您只需记得 CI/CD 其实就是一个流程(通常形象地表述为管道),用于实现应用开发中的高度持续自动化和持续监控。

因案例而异,该术语的具体含义取决于 CI/CD 管道的自动化程度。许多企业最开始先添加 CI,然后逐步实现交付和部署的自动化(例如作为云原生应用的一部分)。

我们的专家可帮助您的组织开发所需的实践、工具和文化,以便更有效地现代化改造现有应用并构建新的应用。

在您的云原生开发之旅中获得专业帮助

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

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

进一步了解技术细节

完成 CI 中构建及单元测试和集成测试的自动化流程后,持续交付可自动将已验证的代码发布到存储库。为了实现高效的持续交付流程,务必要确保 CI 已内置于开发管道。持续交付的目标是拥有一个可随时部署到生产环境的代码库。

在持续交付中,每个阶段(从代码更改的合并,到生产就绪型构建版本的交付)都涉及测试自动化和代码发布自动化。在流程结束时,运维团队可以快速、轻松地将应用部署到生产环境中。

也可以将这些部署自动化

对于一个成熟的 CI/CD 管道来说,最后的阶段是持续部署。作为持续交付——自动将生产就绪型构建版本发布到代码存储库——的延伸,持续部署可以自动将应用发布到生产环境。由于在生产之前的管道阶段没有手动门控,因此持续部署在很大程度上都得依赖精心设计的测试自动化。

实际上,持续部署意味着开发人员对云应用的更改在编写后的几分钟内就能生效(假设它通过了自动化测试)。这更加便于持续接收和整合用户反馈。总而言之,所有这些 CI/CD 的关联步骤都有助于降低应用的部署风险,因此更便于以小件的方式(而非一次性)发布对应用的更改。不过,由于还需要编写自动化测试以适应 CI/CD 管道中的各种测试和发布阶段,因此前期投资还是会很大。

什么是蓝绿部署(发布)?

CI/CD 工具可以协助团队自动进行开发、部署和测试。有些工具专门处理集成(CI)方面的问题,有些工具负责管理开发和部署(CD)工作,而另外一些工具则专注于持续测试或相关功能。

针对 CI/CD 的最著名的开源工具之一就是自动化服务器 Jenkins。从简单的 CI 服务器到完整的 CD 集线器,Jenkins 都可以处理。

在红帽 OpenShift 上部署 Jenkins

Tekton Jenkins 是一个面向 Kubernetes 平台的 CI/CD 框架,可通过容器为您提供标准的云原生 CI/CD 体验。

在红帽 OpenShift 上部署 Jenkins

除了 Jenkins 和 Tekton Pipelines,您可能想要研究的其他开源 CI/CD 工具包括:

  • Spinnaker,一个面向多云环境构建的 CD 平台。

  • GoCD,一个侧重于建模和可视化呈现的 CI/CD 服务器。

  • Concourse, “一个开源的持续作业器”。

  • Screwdriver,一个面向 CD 设计的构建平台。

此外,团队也可考虑使用托管式 CI/CD 工具,它们可从不同供应商处获得。主流公共云提供商全部提供 CI/CD 解决方案,以及 GitLabCircleCITravis CIAtlassian Bamboo 及众多其他工具。

此外,任何工具只要是 DevOps 的基本工具,就有可能属于 CI/CD 流程的一部分。用于配置自动化(如 AnsibleChef 和 Puppet)、容器运行时(如 Dockerrkt 和 cri-o)以及容器编排(如 Kubernetes)的工具严格来说不算是 CI/CD 工具,但它们也现身于许多 CI/CD 工作流中。

标签:CI,部署,什么,持续,CD,交付,自动化
From: https://www.cnblogs.com/Gdavid/p/17442535.html

相关文章

  • 并行编程解决什么问题?
    多线程爬虫是指通过多个线程并发地请求网页和解析响应,以提高爬虫的效率和速度。在Python中可以使用threading、Queue和requests等模块来实现。并行编程是一种利用多个处理器/内核/线程来同时执行代码的编程方式。它可以解决以下几个问题:提升程序的性能在多任务或多进程场......
  • 《kubernetes 系列》4. etcd 的安装、命令行操作,以及 etcd v2 和 v3 的差异
    楔子通过前面两篇文章,我们已经对etcd有了一个基本的了解,那么接下来就要安装etcd了。安装完之后,再来全面介绍etcd的语法,etcd的功能还是很强大的。下面就来安装etcd。安装etcd先说一下配置,首先操作系统是CentOS7,而且我们这里要搭建三个节点的集群。服务器我在阿里云......
  • 在上海包地种蔬菜是一种什么体验 All In One
    在上海包地种蔬菜是一种什么体验AllInOne三农问题:农业、农村、农民三农问题特指中华人民共和国的农业、农村和农民问题,这是一个从事行业、居住地域和主体身份的三位一体的问题。“三农”作为一个概念则由经济学家温铁军博士于1996年正式提出,自此渐渐被媒体和官方广泛引用......
  • 观南京大学软件研究所李樾老师《除了专业知识我们还应该学些什么》有感
    这是李樾老师在cisp课上给南大大一的同学做的类似于“最后一课”的演讲。我是一名双非普通学生,很庆幸能够在阿b上享受到国内顶尖学府,顶尖老师的思想熏陶,这个视频发表在up主“甜品专家”(谭添老师)的账号上,当时是对南京大学蒋炎岩老师的《操作系统》课程很感兴趣(虽然自己学的是网络......
  • GoldWave是什么软件?goldwave怎么设置中文
    本文参考资料:https://blog.csdn.net/weixin_55412152/article/details/130935207GoldWave6.68是一款专业的,集录音、编辑于一身的音频编辑软件,不仅提供了出色的编辑功能,还提供了丰富的音效选项,可进行混音、剪辑、音效制作等操作,是一款实用、界面友好的音频编辑软件。GoldWave编辑音......
  • tailwindcss在使用cdn引入静态html的时候,使用vscode代码提示
    原文:Hey!TheIntellisenseextensiondoesneedaconfigfiletoworktoday.Iwouldsuggestcreatingoneinyourprojectroottoenabletheextension.Anemptyfilewillworkjustfineforthiscaseifthedefaultssuityourneeds.Ifyouwanttocustomiz......
  • 2023ciscn-misc-国粹复现
    说明:此题给出的两个图片,a.png及k.png是分别表示的x坐标和y坐标。然后再用此坐标对题目进行画图,从而得出flag但是由于本人的代码技术有限只能借鉴大佬们的代码然后对其进行分析学习。importnumpyasnpfromPILimportImage classtest():   def__init__(self):......
  • pandas是干什么的
    Pandas是一个开源的数据分析和数据处理库,建立在NumPy库之上。它提供了一组高效的数据结构和数据分析工具,使得在Python中进行数据操作变得更加简单和灵活。Pandas的主要数据结构是两种核心对象:Series和DataFrame。Series是一维标记数组,类似于带有标签的数组。它可以存......
  • 为什么我们需要API接口?API接口的核心又是什么?
    ​    API(ApplicationProgrammingInterface)是一种连接不同软件之间的标准化的接口,可以让不同软件间进行数据交互和通信。API接口的作用很多,以下是几个主要的原因:1.提高软件系统的灵活性和可扩展性。API接口可以将不同的模块分离开来,使得系统更加模块化,便于后续的扩展......
  • 财务共享服务中心建设流程是什么样的?
    财务共享是当今众多企业在数智化转型道路上的首选模式,财务共享服务中心由于具备“标准化、流程化、资源共享、信息化”的特点,一改传统财务分散的运作模式,将资源集中共享,大大提升了财务管理效率,也为企业管理打下良好的数据基础。财务共享服务中心的流程再造过程遵循“PDCA”管理循环......