持续集成、持续交付、持续部署概述

持续集成、持续交付、持续部署概述

什么是CI/CD、CD?

持续集成(CI : CONTINUOUS INTEGRATION) 是在源代码变更后自动检测、拉取、构建和(在大多数情况下)进行单元测试的过程。
持续交付(CD : CONTINUOUS DELIVERY) 通常是指整个流程链(管道),它自动监测源代码变更并通过构建、测试、打包和相关操作运行它们以生成可部署的版本,基本上没有任何人为干预。
持续部署(CD : CONTINUOUS DEPLOYMENT) 是指能够自动提供持续交付管道中发布版本给最终用户使用的想法。
持续集成、持续交付、持续部署概述

持续集成
持续交付
持续部署
代码
Jar包/war包
Docker镜像
可访问的服务

如上图,持续集成从代码仓库(如Git)上获取代码,使用集成工具(如Jenkins)生成应用或者依赖包。持续交付通过应用容器引擎(如Docker)打包这些应用以及依赖包到一个可移植的镜像中。持续部署平台(如Rancher)自动将打包好的镜像发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。

CI/CD协作办公图

持续集成、持续交付、持续部署概述

一般CI/CD的全流程如上图:

  1. Developers(开发人员)将代码、Dockerfile、manifests提交到Git(可以分开也可以公用)。
  2. Jenkins轮询检测代码变化,当有变化时从Git拉取代码,执行构建和单元测试操作,生成应用或者依赖包。
  3. Jenkins从Git拉取Dockerfile文件,并使用Docker构建此文件,生成一个可移植的镜像,后将此镜像提交到镜像仓库。
  4. Jenkins从Git拉取manifests配置,通过自动化运维工具ansible批量配置到集群。
  5. K8s拉取镜像,并使用最新配置将服务发布到任何流行的 Linux或Windows 机器上。