持续交付与持续部署之间有什么区别?
持续交付和持续部署是两个紧密相关的概念,但它们有时也会单独使用,表明自动化不同的程度。
持续交付通常是指开发团队对应用的更改会自动进行错误测试并上传到存储库(如 GitHub 或容器镜像仓库),然后由运维团队将其部署到实时生产环境中。这旨在解决开发和运维团队之间可见性及沟通较差的问题。因此,持续交付的目的就是确保尽可能减少部署新代码时所需的工作量。
另一方面,持续部署则涵盖了新软件发布过程中的一些额外步骤。它通常指的是自动将开发人员的变更内容从存储库发布到生产环境,以供客户使用。它主要为了解决因手动流程降低应用交付速度,从而使运维团队超负荷的问题。持续部署以持续交付的优势为根基,实现了管道后续阶段的自动化。
转型需要付诸实践
通过 3 个客户案例研究,了解开放式数字化转型如何带来更有意义的成果。
什么是 CI/CD 管道?
CI/CD 管道是为了交付新版本的软件而执行的一系列步骤。把 CI/CD 投入实用,就相当于完成了 CI/CD 管道的构建。
CI/CD 管道加入了监控和自动化来改进应用开发工作流,尤其是在集成和测试阶段以及交付和部署过程中。
尽管可以手动执行 CI/CD 管道的每个步骤,但 CI/CD 管道的真正价值在于应用生命周期的自动化。
连续交付与 DevOps 有何关系?
DevOps(一个将“开发”和“运维”合二为一的概念)是指对企业文化、业务自动化和平台设计等方面进行全方位变革,从而实现迅捷、优质的服务交付,提升企业价值和响应能力。
持续交付是一种特定的软件开发实践,通常与 DevOps 结合使用。DevOps 方法中可能会创建持续交付管道。
DevOps 旨在实现既快又稳的工作流程,使每个想法(比如一个新的软件功能,一个功能增强请求或者一个 bug 修复)在从开发到生产环境部署的整个流程中,都能不断地为用户带来价值。
借助 DevOps,通常在标准开发环境编写代码的开发人员也可与测试人员和 IT 运维团队紧密合作,加速软件构建、代码提交、单元测试和发布,同时保障开发成果的稳定可靠。
实施 DevOps 的一大重要成果,就是由开发和运维团队利用敏捷方法共同支持的 CI/CD 管道。
管道自动化如何助力持续交付?
CI/CD 依靠自动化来加快开发、部署和测试流程。自动化有助于在保持质量的同时减少人为错误。在 DevSecOps 策略中,自动化还有助于提高安全性。
有些工具专门处理集成 (CI) 方面的问题,有些工具负责管理开发和部署 (CD) 工作,而另外一些工具则专注于持续测试或相关功能。
针对 CI/CD 的最著名的开源工具之一就是自动化服务器 Jenkins。从简单的 CI 服务器到完整的 CD 集线器,Jenkins 都可以处理。
另一个常用的开源项目是 Tekton,它是持续交付基金会旗下的产品。Tekton 允许使用 Kubernetes 以声明式描述交付管道,并按需在容器中执行这些交付管道。
Tekton 是 OpenShift 管道(面向红帽® OpenShift® 的 CI/CD 解决方案)的基础。