简要摘抄:

对于 “持续” 一词的概念

这并不意味着“一直在运行”,而是“随时可运行”。

CI 即持续集成

持续集成(continuous integration)是在源代码变更后自动检测、拉取、构建和(在大多数情况下)进行单元测试的过程。
目标是快速确保开发人员新提交的变更是好的,并且适合在代码库中进一步使用。

CD 可分别指代两个概念: 持续交付持续部署

持续交付(continuous delivery)通常是指整个流程链(管道),它自动监测源代码变更并通过构建、测试、打包和相关操作运行它们以生成可部署的版本,基本上没有任何人为干预。

持续交付在软件开发过程中的目标是自动化、效率、可靠性、可重复性和质量保障(通过持续测试)。

持续部署(continuous deployment)是指能够自动提供持续交付管道中发布版本给最终用户使用的想法。根据用户的安装方式,可能是在云环境中自动部署、app 升级(如手机上的应用程序)、更新网站或只更新可用版本列表。

但是根据原文,说持续交付可包含持续部署

持续交付包含持续集成(自动检测源代码变更、执行构建过程、运行单元测试以验证变更),持续测试(对代码运行各种测试以保障代码质量),和(可选)持续部署(通过管道发布版本自动提供给用户)。

个人认为这个两个概念的关键区别,应该是持续交付的结果是生成目标成果,该成果需要人为部署,但是持续部署则是在持续交付的基础上,可以自动将应用发布到生产环境。

Pipeline

将源代码转换为可发布产品的多个不同的 任务(task)和 作业(job)通常串联成一个软件“管道”,一个自动流程成功完成后会启动管道中的下一个流程。这些管道有许多不同的叫法,例如持续交付管道、部署管道和软件开发管道。