DevOps

DevOps是Development和Operations的组合,是一种方法论,是一组过程、方法与系统的统称,用于促进应用开发、应用运维和质量保障(QA)部门之间的沟通、协作与整合。以期打破传统开发和运营之间的壁垒和鸿沟。

什么是 CI/CD?

总结:CI/CD
自动化地、定期将团队内各个程序员的代码修改,合并到主干分支中,并且能够运行自动化的测试,以确保这些新提交的代码不会对原有功能产生破坏。
同时,还能自动将已验证通过的代码更改,发布到存储库中(github)
接着,还能自动将新版本应用,部署到生产环境中。

目的: 为运维人员减负,提高产品从开发完毕到正式上线的速度,减少繁杂的过程。
解决开发和运维之间沟通困难的问题。

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

具体而言,CI/CD 在整个应用生命周期内(从集成和测试阶段,到交付和部署)引入了持续自动化和持续监控。这些关联的事务通常被统称为“CI/CD 管道”,由开发和运维团队以敏捷方式协同支持。

CI 和 CD 之间(以及不同 CD 之间)有什么区别?

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

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

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

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

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

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

持续集成(Continuous Integration)

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

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

持续交付(Continuous delivery)

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

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

持续部署(Continuous Deployment)

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

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

DevOps 什么是 CI/CD?相关推荐

  1. DevOps中的CI/CD环境搭建与调优-Gitlab和Jenkins安装

    DevOps中的CI/CD环境搭建与调优 DevOps中的CI/CD环境搭建与调优 Gitlab 开源的管理软件 安装 配置 Jenkins 持续部署工具(源码拉取 预处理 编译 构建 打 包 镜像 ...

  2. jenkins 增量发布插件_CI/CD工具:Jenkins还是GitLab CI/CD?

    十年来,持续集成(Continuous Integration,CI)和持续交付(Continuous Delivery,CD)领域都取得了很大的进步.DevOps 测试的兴起导致了对 CI/CD 工 ...

  3. P8-DevOps中的CI/CD环境搭建与调优

    DevOps中的CI/CD环境搭建与调优 DevOps,Docker,云计算等等 一.知识点回顾 上节课内容: P8架构中项目中所需要的 Canal,主要用于 MySQL 主从架构增量或全量备份,将数 ...

  4. ci/cd自动化测试_CI / CD管道加快测试自动化的16种最佳实践

    前言: 知其然,知其所以然.相较于DevOps而言,CI/CD是一个相对具象的概念.在 IT 企业中,CI/CD的应用愈加广泛,成为推动软件研发活动的重要基础设施服务,同时推动 DevOps 模式的实 ...

  5. Jenkins 流水线 获取git 分支列表_CI/CD 工具选型:Jenkins 还是 GitLab CI/CD?

    原标题:CI/CD 工具选型:Jenkins 还是 GitLab CI/CD? 作者 | Rahul Jain 策划 | 田晓旭 近十年来,持续集成(Continuous Integration,CI ...

  6. 容器云原生DevOps学习笔记——第三期:从零搭建CI/CD系统标准化交付流程

    暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...

  7. 唱吧DevOps的落地,微服务CI/CD的范本技术解读----最大的难点并不是实际业务代码的编写,而是服务的监控和调试以及容器的编排...

    1.业务架构:从单体式到微服务 K歌亭是唱吧的一条新业务线,旨在提供线下便捷的快餐式K歌方式,用户可以在一个电话亭大小的空间里完成K歌体验.K歌亭在客户端有VOD.微信和Web共三个交互入口,业务复杂 ...

  8. DevOps笔记-06:什么是CI/CD?它们与敏捷开发和devops的关系?

    什么是CI/CD?它们与敏捷开发和devops的关系? 现在某些大型公司中软件的开发和发布已经形成了一套标准流程,其中敏捷开发和DevOps是更好更快发布产品的常用的两种理念,而CI和CD是实现这两种 ...

  9. Azure DevOps+Docker+Asp.NET Core 实现CI/CD(三.实现CD持续部署管道)

    前言 本文主要是讲解如何使用Azure DevOps+Docker 来实现持续集成Asp.NET Core项目(当然 也可以是任意项目). 上一篇: Azure DevOps+Docker+Asp.N ...

最新文章

  1. 【小白的CFD之旅】小结及预告
  2. 我的Ubuntu体验
  3. mybatis mapper文件找不到_MyBatis 面试题
  4. (*长期更新)软考网络工程师学习笔记——Section 7 网络层下篇
  5. VC2008的运行库问题。
  6. 7、oracle下的序列
  7. java null转换jason_Java笔记Java常量、变量
  8. 算法题存档20190304
  9. 大数据后从此再无隐私_0-2输球后,恒大再迎2大坏消息,2项数据很尴尬,补时还后场倒脚...
  10. 互联网移动在“云”端
  11. API 的5 大身份验证安全隐患
  12. GIS案例练习-----------第一天
  13. The Tangled Web: A Guide to Securing Modern Web Applications 原版pdf
  14. matlab 添加文本框textbox
  15. [每日一氵]笔记本电脑充电后卡得一批
  16. 【节日快乐】圣诞元旦在即,你准备好怎么营销了吗?
  17. 播客49:Lyle Troxell
  18. VIPKID大米网校“学费交多少,由家长说了算”背后的实力自信
  19. 安裝完成Ubuntu20.04之後要做的事
  20. 手游联运平台是怎样开发的?

热门文章

  1. WORD公式编号及公式位置调整
  2. 性能测试岗位常见面试题答案
  3. Unity WebGL发布及Ubuntu Apache服务器部署
  4. 国内外文献下载(万方知网IEEE)
  5. unity发布安卓黑屏_untiy3dAndroid和ios启动游戏黑屏界面增加闪屏处理
  6. LPC11C14刷卡门锁
  7. 如何把森林转化成二叉树
  8. java面试大全(八月助力 offer)
  9. 在Github中下载一个文件夹里的所有文件
  10. MySQL 覆盖索引(Cover Index)