概述

CI/CD 是一种通过在应用程序开发阶段引入自动化来频繁向客户交付应用程序的方法。CI/CD 的主要概念是持续集成、持续交付和持续部署。CI/CD 是解决集成新代码可能给开发和运营团队带来的问题(又称“集成地狱”)的解决方案。 具体来说,CI/CD 在应用程序的整个生命周期(从集成和测试阶段到交付和部署)引入了持续自动化和持续监控。总而言之,这些相互关联的实践通常被称为“ CI/CD 管道”,并得到开发和运营团队的支持,以敏捷的方式与 DevOps 或站点可靠性工程 (SRE)方法一起工作。

CI 和 CD(以及其他 CD)有什么区别?

首字母缩略词 CI/CD 有几个不同的含义。CI/CD 中的“CI”始终指的是持续集成,它是开发人员的一个自动化过程。成功的 CI 意味着对应用程序的新代码更改会定期构建、测试并合并到共享存储库。它解决了同时开发的应用程序有太多分支可能相互冲突的问题。 CI/CD 中的“CD”指的是持续交付和/或持续部署,这些相关概念有时可以互换使用。两者都是关于自动化管道的进一步阶段,但有时单独使用它们来说明发生了多少自动化。 持续交付通常意味着开发人员对应用程序的更改会自动进行错误测试并上传到存储库(如 GitHub 或容器注册表),然后运维团队可以将它们部署到实时生产环境中。这是对开发和业务团队之间可见性和沟通不畅问题的解决方案。为此,持续交付的目的是确保以最少的工作量部署新代码。 持续部署(另一种可能的“CD”)可以指自动将开发人员的更改从存储库发布到生产环境,供客户使用。它解决了运营团队因手动流程超载而减慢应用程序交付的问题。它通过自动化管道中的下一阶段,建立在持续交付的优势之上。 ci-cd-flow-desktop 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),而其他工具则专门用于持续测试或相关功能。 最著名的 CI/CD 开源工具之一是自动化服务器 Jenkins。Jenkins 旨在处理从简单的 CI 服务器到完整的 CD 中心的任何事物。 Tekton Pipelines 是一个用于 Kubernetes 平台的 CI/CD 框架,它通过容器提供标准的云原生 CI/CD 体验。 除了 Jenkins 和 Tekton Pipelines,您可能希望研究的其他开源 CI/CD 工具包括:

  • Spinnaker ,一个为多云环境构建的 CD 平台。
  • GoCD,一个强调建模和可视化的 CI/CD 服务器。
  • Concourse,“一个开源的连续做事者”。
  • Screwdriver,专为 CD 设计的构建平台。

团队可能还想考虑托管 CI/CD 工具,这些工具可从各种供应商处获得。主要的公共云提供商都提供 CI/CD 解决方案,以及 GitLab、CircleCI、Travis CI、Atlassian Bamboo 等。 此外,任何作为 DevOps 基础的工具都可能是 CI/CD 过程的一部分。配置自动化工具(如 Ansible、Chef 和 Puppet)、容器运行时(如 Docker、rkt 和 cri-o)和容器编排( Kubernetes ) 严格来说并不是 CI/CD 工具,但它们会显示在许多 CI/CD 工作流程中。


本站由 Diebug 使用 Stellar 1.29.1 主题创建。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
本站总访问量 | 本站总访客数