CI 概览 #
解释常见的 CI 概念,更详尽的文档参考 Gitlab CI
概念 #
CI #
continuous integration
对于每次代码的变更,自动化执行测试,构建,风格校验等自动化任务,用于减少 bug 的引入, 保证代码质量
CD #
Continuous Delivery #
在 CI 的基础上更进一步,持续交付代码到指定环境(人工操作)
Continuous Deployment #
跟 continuous delivery 类似,不过是自动化发布,无需人工介入
Pipeline #
一次 CI 的执行过程,称之为一个流水线,一个流水线有多个 Stage,例如(构建,测试,发布)
Pipelie 的常见类型
- 基础 Pipeline,并发按序
- 有向无环图 Pipeline,基于 Job 之间的依赖关系运行
- 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
流程如下
流程图 #