一、简介
CI/CD 是持续集成和持续交付/部署的缩写,旨在简化并加快软件开发生命周期。CI和CD的英文以及含义如下:
CI continuous integration (持续集成)
CD continuous delivery/deployment (持续交付和部署)
持续集成(CI)是指自动且频繁地将代码以及代码更改提交到代码仓库。持续交付和/或持续部署(CD)是一个由两部分组成的过程,涉及代码更改的集成、测试和交付。持续交付不会自动部署到生产环境,持续部署则会自动将更新发布到生产环境。流程如下:
1、持续集成(CI continuous integration )
持续集成是一种面向开发人员的自动化流程,开发人员将完成的代码或者修改的代码及时自动的提交或者更新到代码仓库中的某一个分支上,进行这些更新时,会触发测试步骤的自动执行,以确保合并代码更改的可靠性。
2、持续交付 (CD continuous delivery)
将持续集成所提交的代码进行构建,部署到测试环境再进行单元测试(unit esting),集成测试(integration testing),自动将经过验证的代码打上对应标签并发布到指定代码库。这些代码因为经过测试并且测试通过,所以是可以被发布到生产上的,可以由运维团队将其部署到实时的生产环境。它可以解决开发团队和运维团队之间的可见性和沟通不佳的问题。为此,持续交付的目的就是拥有一个可随时部署到生产环境的代码库,并确保以最少的工作量部署新代码。
3、持续部署(CD continuous deployment )
持续部署是持续交付的延伸,指自动将持续交付所提交的代码发布到生产环境,以供客户使用。CD 解决了运维团队因手动流程过多导致应用交付速度变慢的问题。持续部署以持续交付的优势为根基,实现了CD阶段的自动化。
然而,由于在生产前的管道阶段没有人工关卡,因此,持续部署在很大程度上依赖于精心设计的测试自动化。这意味着持续部署可能需要大量的前期投入,因为需要编写自动化测试以适应 CI/CD流程中的各种测试和发布阶段。
二、CI/CD 与 DevOps 对比
CI/CD 是 DevOps 方法的重要组成部分,DevOps 旨在促进开发和运维团队之间的协作。CI/CD 和 DevOps 均注重代码集成流程的自动化,以加快将某个想法(例如某个新的功能、功能增强请求或 bug 修复)从开发到部署到可为用户提供价值的生产环境中的整个流程。
在 DevOps 的协作框架中,安全防护是贯穿始终的共同责任。这是一种重要的思维方式,“DevSecOps”一词正是在此基础上诞生的,它强调了在 DevOps 计划中构建安全基础的必要性。DevSecOps(开发、安全防护和运维)是对企业文化、业务自动化和平台设计等方面进行全方位变革,将安全作为整个 IT 生命周期的共同责任。
引用
https://www.redhat.com/zh/topics/devops/what-is-ci-cd