- 文集信息
- 目录大纲
- 最新文档
- 知识宇宙
文集详情
文集导读
CI/CD 实践教程导读
持续集成(CI)、持续交付(CD)与持续部署(CDP) 把「提交代码」到「用户可用」之间的重复劳动自动化。本教程采用动手优先叙事:每节先给一段能跑的最小流水线配置,再解释为什么这样设计、踩过什么坑。
Amazon 2011 年内部数据曾显示:部署频率从「数月一次」提升到「每天数百次」后,变更失败率反而下降——不是因为代码变少了,而是因为每次变更更小、反馈更快。CI/CD 的核心不是工具炫技,而是把质量信号嵌进交付路径,让「能不能发布」变成可观测、可回滚的工程问题。
你将学到什么
读完本教程,你应能:
- 区分 CI、CD、CDP 三者的目标边界与适用场景
- 用 Jenkins、GitHub Actions 或 GitLab CI 搭一条含构建、测试、制品发布的流水线
- 设计部署管道各 stage 的门禁与失败策略
- 评估蓝绿、金丝雀、滚动更新在业务约束下的取舍
- 在流水线中集成容器构建、IaC 与安全扫描(DevSecOps)
章节路线
| 章 | 主题 | 动手入口 |
|---|---|---|
| 第1章 | CI/CD 基础 | 三条最小流水线对比 CI vs CD vs CDP |
| 第2章 | 持续集成 | Git 触发策略 + Maven/npm 构建 + pytest 门禁 |
| 第3章 | 持续交付 | 多环境管道 + E2E/性能测试 + 配置分离 |
| 第4章 | 持续部署 | 全自动条件清单 + 蓝绿/金丝雀 + 回滚剧本 |
| 第5章 | DevSecOps | Docker 多阶段构建 + Terraform + SAST 扫描 |
CI/CD 三大自动化支柱

30 分钟快速上手
若你手头有一个 Python 小项目,下面这段 GitHub Actions 工作流就是本教程的「第零课」——push 即触发构建与测试:
name: ci-starter on: [push, pull_request] jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: { python-version: "3.11" } - run: pip install -r requirements.txt pytest - run: pytest --cov=app --cov-fail-under=80
跑通后对照四问:触发条件是否覆盖 PR?依赖是否锁定?覆盖率阈值是否可解释?失败通知是否到达负责人?——后续各章会把每一问展开成可复用的工程模式。
阅读建议
- 后端 Java 团队:第2章 Maven/Gradle 构建 → 第3章 Nexus 制品 → 第4章 K8s 滚动更新
- 前端 Monorepo:第2章 npm/pnpm 缓存 → 第3章 preview 环境 → 第5章容器多阶段构建
- 合规行业:第3章审批 gate → 第4章金丝雀 + 人工确认 → 第5章 SAST/依赖扫描
⚠️ 常见误解:买了 Jenkins 就等于有了 CI。工具只是执行器;没有版本规范、测试门禁和制品策略,流水线只是更快的打包机。
💡 关键直觉:CI/CD 的价值在反馈环的直径——从 commit 到「知道有没有问题」的时间越短,修复成本越低。Martin Fowler 早年就强调:集成频率与缺陷发现成本呈反比。
每章支柱页给出学习目标与子节导航;各节含 Jenkinsfile、GitHub Actions yaml、pytest 等可改即跑的配置片段,以及 mermaid 流程图与对比表。
三大自动化支柱详解
SOURCE 原文将 CI/CD 拆解为三根支柱,本教程各章与之对应:
自动化构建将源码经编译、依赖解析、打包变为 JAR、Docker 镜像等制品。典型步骤:拉代码 → 下载依赖(Maven Central/npm registry)→ 编译 → 单元测试 → 打包 → 上传制品库。Maven package、Gradle build、npm run build、Docker build 都是构建动作。构建必须在干净环境重复执行——Docker 或 CI runner 保证「不在开发者笔记本特有的全局状态里编译」。
自动化测试形成质量门禁金字塔:单元测试毫秒级、集成测试秒级、E2E 分钟级。JUnit、pytest、Jest 跑单元;Testcontainers 跑集成;Cypress、Playwright 跑 E2E。CI 阶段拦快测,CD 阶段拦慢测——顺序错了,反馈环就断了。
自动化部署把制品推到 dev/test/staging/prod。Ansible、Helm、kubectl 是常见工具;策略有滚动、蓝绿、金丝雀。部署后须健康检查与 smoke test,CDP 场景下失败自动 rollback。
DORA 与团队成熟度
| 级别 | 部署频率 | 你处在哪 |
|---|---|---|
| 起步 | 月 | 先 CI |
| 成长 | 周~天 | 加 CD |
| 精英 | 按需多次 | CDP 可选 |
别跨级跳:没有稳定 CI 就上 CDP,等于去掉最后一道人工保险却未建立自动保险。
工具选型速览
| 场景 | 推荐起点 | 原因 |
|---|---|---|
| GitHub 开源项目 | GitHub Actions | 与 PR 一体 |
| 私有 GitLab | GitLab CI | Registry+K8s Agent |
| 企业 Jenkins 存量 | Jenkins + 共享库 | 插件生态 |
| 多云 K8s | Argo CD + 任意 CI | GitOps 部署 |
本教程代码示例以 GitHub Actions、Jenkinsfile、GitLab CI yaml 三系并用——便于对照迁移。
下一章我们从 CI、CD、CDP 的定义差异入手,用三条最小流水线帮你建立直觉。
目录大纲
最新文档
知识宇宙
正在加载知识图谱...