概览

CI 概览 #

解释常见的 CI 概念,更详尽的文档参考 Gitlab CI

概念 #

CI #

continuous integration

对于每次代码的变更,自动化执行测试,构建,风格校验等自动化任务,用于减少 bug 的引入, 保证代码质量

CD #

Continuous Delivery #

在 CI 的基础上更进一步,持续交付代码到指定环境(人工操作)

Continuous Deployment #

跟 continuous delivery 类似,不过是自动化发布,无需人工介入

Pipeline #

一次 CI 的执行过程,称之为一个流水线,一个流水线有多个 Stage,例如(构建,测试,发布)

Pipelie 的常见类型

  1. 基础 Pipeline,并发按序
  2. 有向无环图 Pipeline,基于 Job 之间的依赖关系运行
  3. Merge Request Pipeline,仅当有 Merge Reqest 时执行

Stage #

定义 Job 的执行顺序

Job #

最小任务单元,每个 Job 仅属于单一的 Stage

对基础 Pipeline 而言, 同一个 Stage 里的多个 Job 并行执行,

一个 Stage 里的所有 Job 都执行成功,Pipeline 进入到下一个 Stage

一个 Stage 里的任一 Job 失败,Pipeline 失败,后续 Stage 不会继续执行

Pulse CI 系统架构设计 #

Pulse CI 系统内部主要由 webapp + manager + worker 三个模块构成

同时外部依赖企业私有部署的 Gitlab,做权限管理

Webapp #

用户交互界面,从 Manager 获取数据

Manager #

Api backend,管理 Worker, 分发任务给 Worker,管理 Cache 和构建产物

Worker #

执行具体的 Pipeline,并将执行结果返回给 Manager

架构图 #

Pulse CI 执行流程 #

Pulse CI 目前仅实现了基础的 Pipeline

流程如下

流程图 #