CI/CD 知识体系概览
知识地图
核心概念
| 概念 | 说明 |
|---|---|
| 持续集成(CI) | 开发者频繁合并代码,每次合并自动触发构建和测试 |
| 持续交付(CD) | CI 通过后自动部署到预发布环境,生产部署需手动审批 |
| 持续部署 | CI 通过后自动部署到生产环境,无需人工干预 |
| Pipeline | 由多个 Stage 组成的自动化流水线 |
| Stage | 流水线中的一个阶段(如 build / test / deploy) |
| Job | Stage 中的一个具体任务 |
| Artifact | 构建产物(如 Docker 镜像、JAR 包) |
典型 CI/CD 流程
CI/CD 工具对比
| 特性 | Jenkins | GitHub Actions | GitLab CI/CD |
|---|---|---|---|
| 类型 | 自托管 | 云托管 / 自托管 Runner | 云托管 / 自托管 Runner |
| 配置 | Jenkinsfile(Groovy) | YAML Workflow | .gitlab-ci.yml |
| 生态 | 插件最丰富(1800+) | Marketplace Actions | 内置功能完善 |
| 托管成本 | 需自己维护 | 免费额度 + 付费 | 免费额度 + 付费 |
| 容器支持 | 需配置 | 原生 Docker | 原生 Docker |
| 并行能力 | 需配置 Agent | 矩阵构建 | parallel 关键字 |
| 适用场景 | 复杂企业级 | GitHub 项目 | GitLab 项目 |
部署策略
| 策略 | 原理 | 回滚速度 | 资源开销 | 适用场景 |
|---|---|---|---|---|
| 滚动更新 | 逐步替换旧版本 Pod | 中等 | 低 | 通用场景 |
| 蓝绿部署 | 两套环境,流量一次性切换 | 极快(切回蓝) | 高(双倍资源) | 对中断敏感 |
| 金丝雀发布 | 先导流小部分流量到新版本 | 快(关闭金丝雀) | 低 | 需要灰度验证 |
| A/B 测试 | 按用户特征分流不同版本 | 中等 | 中等 | 需要对比数据 |
学习路径
- 入门:理解 CI/CD 概念,用 GitHub Actions 搭建第一条流水线
- 进阶:流水线优化(缓存、并行、矩阵构建),部署策略
- 实践:Jenkins 搭建、GitLab CI Runner 配置、Helm + ArgoCD 部署
- 高级:多环境管理、安全扫描集成、流水线即代码