CICD与DevOps

这篇具有很好参考价值的文章主要介绍了CICD与DevOps。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

CICD与DevOps

文章声明,本文选自网上关于CICD与DevOps的讲解综合,如有侵权,联系删除

什么是CI/CD

什么是持续集成(CI-Continuous integration)

持续集成是指多名开发者在开发不同功能代码的过程当中,可以频繁的将代码行合并到一起并切相互不影响工作。

什么是持续部署(CD-continuous deployment)

是基于某种工具或平台实现代码自动化的构建、测试和部署到线上环境以实现交付高质量的产品,持续部署在某种程度上代表了一个开发团队的更新迭代速率。

什么是持续交付(Continuous Delivery)

持续交付是在持续部署的基础之上,将产品交付到线上环境,因此持续交付是产品价值的一种交付,是产品价值的一种盈利的实现。

CICD与DevOps

持续集成 CI(Continuous Integration)

CICD与DevOps

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

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

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

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

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

持续交付 CD (Continuous Delivery)

CICD与DevOps

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

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

  • 开发环境发布:我们可以将开发环境产出的制品部署进行测试,没有问题后上传到测试环境的制品库中。
  • 测试环境发布:此时通知测试人员可以进行测试环境发布测试,获取测试环境制品库中的制品,发布到测试环境验证。验证通过将制品上传到预生产环境制品库。
  • 预生产环境发布:获取预生产环境制品,进行部署测试。测试成功后可以将制品上传到生产库中。
  • 手动部署生产环境。

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

持续部署 CD(Continuous Deploy)

CICD与DevOps

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

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

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

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

DevOps

什么是DevOps

DevOps(Development和Operations组合)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。一些国际组织对其定义如下:

DevOps强调对应用进行快速、小规模、可迭代的开发和部署,以更好地应对和满足客户的需求。它要求进行文化的转变,即将开发和运维只能作为一个合作的整体来看待,注重提高业务价值,旨在精简整个IT价值链。

从定义来看,其实devops就是为了让开发、运维和QA可以高效协作的流程。(可以把DevOps看作开发、技术运营和质量保障(QA)三者的交集)

CICD与DevOps

DevOps是一套实践框架,包含了精益、敏捷的理念,各种持续集成和持续交付的职能,以及构建流水线的工具。它着眼于项目的实践,在实践中强调以业务价值来统一所有工作目标,这个目标是不同的团队打破原有的组织考核壁垒,进行合作和沟通的基础。它的核心思想是把所有的IT交付和运维服务团队统一起来,围绕一个统一的业务价值目标及业务交付范围加强沟通,通过频繁、快速地迭代交付和反馈,达到加快交付速度和提高交付质量的目的。

如果将IT系统提供的业务服务作为一个交付的产品来看,就存在一条在IT软件开发和交付领域等形成的流水线。为了建设这样一条流水线,需要弄清楚以下问题:

- 流水线的内容是什么?它的起点在哪?终点在哪?

- 如何搭建这条流水线?

- 如何管理这条流水线?

DevOps核心理念

DevOps的生命周期如下图所示:

CICD与DevOps

在其生命周期中,包含以下几个核心理念:

CICD与DevOps

实现组织目标

技术人员所做的软件系统是为业务部门的业务发展服务的,此是将所有IT交付团队统一起来的共同目标和原始驱动力。只要对比一下自己团队的KPI和业务目标的关系,就能发现传统的分隔式项目交付管理是多么官僚和浪费。所以,DevOps流水线包含开发、测试、部署和运维等整个项目过程,这些直接关系到最终的业务价值的实现,因此必须作为一个整体进行管理。

流程标准化

俗话说,无规矩不成方圆。在践行DevOps的时候也需要标准化的交付流程,且这个流程不是简单的管理规范,而是要用持续交付的流水线来取代冗长的开发运维流程,实现高效,高质。

除了开发测试交付部分,从运维的角度来看,在DevOps里强调的是轻量化的ITSM流程和架构,即根据保证业务运行连续性的需要来裁减流程,并形成标准化的流程。所谓标准化指的是在需求、开发、测试、维护的过程中将流程最小化。流程过于复杂是造成IT资源浪费的最重要原因,所以应该将流程最小化,同时将更多的精力、劳动、资源投入真正创造业务价值的生产中。

工作自动化

开发运维流程标准化是自动化的前提,如果流程不是标准化,那么自动化也是没有根基的。只有将流程标准化,自动化才能有定义的标准。

自动化能提升效率,还能使效率和质量透明化,让整个交付过程更加可控。

DevOps文化

DevOps是一种文化,它提倡团队成员围绕共同的业务目标,进行互相理解、信任、沟通和协作,在交付过程出现问题后,从中分析原因和吸取教训,而不是互相指责和推卸责任。

总的来说,DevOps涵盖CALMS(自动化、精益、可衡量和分享)文化,如下图:

CICD与DevOps

从项目实践来看,DevOps是指导软件系统交付的一系列实践方法,贯穿于项目的计划、需求、设计、开发、部署、运维及终止的整套过程中。

CICD与DevOps

从传统的IT项目交付的角度来看,DevOps实践框架包括:敏捷管理、持续集成、持续交付和自动化测试。

# 敏捷管理

指将需求以用户故事的方式进行拆解,然后以最小化、快速迭代的方式进行开发管理。

# 持续集成

指针对开发人员的代码提交过程,以单件流的方式进行流水线式的自动化管理。

# 持续交付

预先定义、规划从代码生成到产品产出的流水线,并以自动化、模板化方式进行交付。

# 自动化测试

根据测试流程,以模板化、自动化的方式实现测试的手段。

DevOps相关工具

CICD与DevOps

cicd与devops区别

1.cicd是指持续集成发布部署,是一套流程实现软件的构建测试部署的自动化。

2.DevOps 就是开发(Development)、测试(QA)、运维(Operations)这三个领域的合并。虽然名字中没有体现,但是DevOps仍包括测试。

CICD与DevOps

3.DevOps与cicd紧密相关,是理论与实践的结合,DevOps要实现人员一体化,必须要借助cicd工具来自动化整个流程。

CICD与DevOps

扩充.DevOps是一种思想、一组最佳实践、以及一种文化。DevOps落地实施,从组织架构、设计人员、流程、人员分工、人员技能到工具,变化很大,要求很高,完全颠覆了现有的开发运维模式,建设风险很高。

CICD和DevOps的区别和联系

个人理解,CICD更关注的是整个开发,测试,部署的自动化的过程,当我们在本地单元测试通过后,我们提交到git上,触发相应的webhook或者类似的东西进行代码的构建,并打包部署到相应的机器上,自动化的完成这整个过程。

而DevOps更关注的是打通用户、PMO、需求、设计、开发(Dev)、测试、运维(Ops)等各上下游部门或不同角色;打通业务、架构、代码、测试、部署、监控、安全、性能等各领域工具链;尤其是打通开发与运维之间的gap,因为两者实际上存在着很多的冲突。DevOps是基于CICD的,自动化的流程是基础,DevOps是一个项目由idea到实际稳定运行的产品的一个最佳实践。

DevOps是CICD思想的延伸,CICD是DevOps的基础核心,如果没有CICD自动化的工具和流程,DevOps是没有意义的。

CICD与DevOps文章来源地址https://www.toymoban.com/news/detail-455300.html

选自:

文章:什么是CI/CD - 知乎 (zhihu.com)

文章:什么是DevOps ? - 罗穆瑞 - 博客园 (cnblogs.com)

文章:cicd与devops区别 (baidu.com)

文章:什么是CI CD? 什么是DevOPS?他们有什么联系和区别?_GaleZhang的博客-CSDN博客_cicd

jenkins学习:

安装jenkins教程:jenkins使用docker安装保姆级教程(面向小白教程,最新最全,全图文)2022-8-1,不会docker也没关系

2022-08-03最新更新:使用jenkins+gitee创建docker镜像并运行

2022-08-11最新更新:jenkins流水线(jenkinsfile)详解,保姆式教程

到了这里,关于CICD与DevOps的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • DevOps极速入门丨Gitlab丨Jenkins丨harbor丨CICD丨自动化丨运维开发

    一、DevOps介绍 软件开发最开始是由两个团队组成: 开发计划由开发团队从头开始设计和整体系统的构建。需要系统不停的迭代更新。 运维团队将开发团队的Code进行测试后部署上线。希望系统稳定安全运行。 这看似两个目标不同的团队需要协同完成一个软件的开发。 在开发

    2023年04月18日
    浏览(50)
  • DevOps系列文章之 DevOps 运维服务体系

    DevOps 体系是从原始运维一步步走过来的,原始运维好比是本,有了本进而想继续提升效率、减少出错、优化流程,就发展到了 DevOps,AIOps……各种Ops 首先,运维的业务职能规范后形成章程、纲领,在互联网快速发展的特点下,形成了一套应对”快”和”变”的体系,并不停

    2024年02月12日
    浏览(93)
  • 云原生架构的核心技术(微服务、DevOps、容器云、Service Mesh、Serverless、声明式API)

    天上飞的理念☁️☁️☁️☁️☁️,必然有落地的实现 文章介绍 读完本文,你将对云原生下的核心概念微服务、DevOps、容器云、Service Mesh、Serverless、Immutable Infrastructure、Declarative-API等有一个详细的了解,帮助你快速掌握云原生的核心和要点。 IaaS(Infrastructure-as-a-Service基

    2024年02月03日
    浏览(37)
  • DevOps系列文章 之 Python 基础

    考点:字符串:str( )、整型数:int( )、浮点数:float( ) 考点:条件分支 考点:引入随机数 考点:while循环语句 考点:for循环语句 Python语言支持以下类型的运算符 以下假设变量a为10,变量b为20: 运算符 描述 实例 + 加 - 两个对象相加 a + b 输出结果 30 - 减 - 得到负数或是一个

    2024年02月11日
    浏览(33)
  • DevOps系列文章 之 Python基础

    1.定义 1、集合是一个无序的,不重复的数据组合,它的主要作用如下: 1.去重,把一个列表变成集合,就自动去重了 2.关系测试,测试两组数据之前的交集、差集、并集等关系 2、集合类型 1.数学上,把set称做由不同的元素组成的集合,集合(set)的成员通常被称做集合元素

    2024年02月11日
    浏览(27)
  • DevOps系列文章之 Git知识大全

    常用命令   其他参数 --inital-branch 初始化的分支 --bare 创建一个裸仓库(纯 Git 目录,没有工作目录) --template 可以通过模板来创建预先建好的自定义 git 目录   用户名配置 git config --global user.name \\\"yourname\\\" git config --global user.email yourname@xx.com instead of 配置 git config --global url.git

    2024年02月16日
    浏览(25)
  • DevOps系列文章之 Dockerfile 使用流程

    主要步骤: Step1、准备项目应用程序包 Step2、编写Dockerfile及启动脚本 Step3、docker build 构建镜像 Step4、docker run 启动容器 Step5、docker exec 进入容器进行验证 Step6、镜像的导入导出 Step7、提交容器生成新镜像 Step1、准备项目应用程序包 根据项目需要,将应用程序包、Nginx配置文件

    2024年02月16日
    浏览(29)
  • DevOps系列文章 之 Springboot单元测试

    在没有代码生成工具或尝试一门新的 ORM 框架时,当我们希望不去另外写 Service 和 Controller 来验证 DAO 层的代码不希望只通过接口请求的方式来验证时,这时候单元测试的方式就可以帮助我们满足这一需求。 在我们开发Web应用时,经常会直接去观察结果进行测试。虽然也是一

    2024年02月15日
    浏览(41)
  • DevOps系列文章之Argo CD 使用

    Argo CD 是用于 Kubernetes 的声明性 GitOps 连续交付工具。 Argo CD 可在指定的目标环境中自动部署所需的应用程序状态,应用程序部署可以在 Git 提交时跟踪对分支,标签的更新,或固定到清单的特定版本。 Argo CD 的主要职责是 CD(Continuous Delivery,持续交付),将应用部署到 Kube

    2024年02月16日
    浏览(32)
  • Linux系列文章 —— vim的基本操作(误入vim退出请先按「ESC」再按:q不保存退出,相关操作请阅读本文)

    vim-操作篇 进程概念篇 进程地址空间篇 Linux,是一种免费使用和自由传播的类UNIX操作系统,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用

    2024年02月03日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包