首页 / 知识库 / 系统架构体系 / 项目到底如何部署

06 - 什么是 CI/CD,它解决什么问题

现代部署的引擎是 CI/CD。我们先不急着讲它的定义,而是从”没有它的时候有多痛”讲起——这样你才能真正理解它存在的意义。

先感受”手动部署”的痛

回忆第 01 章,你每次想更新线上代码,得手动做这些:

  1. 打开终端,SSH 登录服务器
  2. git pull 拉最新代码
  3. 装可能新增的依赖
  4. 前端重新 build
  5. 重启后端服务
  6. 刷新 Nginx,清缓存
  7. 打开网站,祈祷它没坏

这套流程手动做,会带来一连串问题:

  • 容易漏步骤:忘了装依赖、忘了重启,线上就崩了
  • 容易出错:命令敲错、传错文件、连错服务器
  • 谁会谁不会:只有那个”懂部署的人”能发版,他请假了就没人敢动
  • 半夜发版:为了不影响用户,只能挑深夜发,发到崩溃还得连夜回滚
  • 无法追溯:线上到底是哪个版本的代码?谁也说不清

一句话:手动部署 = 又慢、又容易错、又依赖某个人、又没法追溯。

CI/CD 是什么

CI/CD 就是把上面这套流程自动化:你只要把代码 push 到仓库,剩下的构建、测试、部署,全部由机器自动完成。

它由两部分组成:

CI = Continuous Integration(持续集成)

“持续地把大家的代码合到一起,并自动检查有没有问题。”

每次有人提交代码,就自动:拉代码 → 装依赖 → 跑测试 → 构建。目的是尽早发现问题——别等上线了才发现代码是坏的。

类比:一群人合写一本书,每人写完一段就立刻自动校对、和整本书拼一次,而不是全写完了才发现互相矛盾、改到崩溃。

CD = Continuous Delivery/Deployment(持续交付/部署)

“检查通过的代码,自动发布到线上。”

CI 把代码验证、打包好之后,CD 负责把它自动部署到运行环境(比如推到 OSS/CDN、部署到 Serverless)。

CI 管”把代码变成一个可用的、验证过的成品”,CD 管”把这个成品自动送到线上”。合起来就是 CI/CD

CI/CD 到底解决了什么问题

把它对着上面的痛点看:

手动部署的痛CI/CD 怎么解决
容易漏步骤步骤写成脚本,每次一模一样地执行
容易出错机器执行,不会手抖敲错命令
依赖某个人谁 push 都能触发,不用”懂部署的人”
半夜发版一键/自动发布,还能一键回滚,随时发
无法追溯每次部署都有记录,知道上的是哪个版本
上线才发现代码坏了CI 阶段自动测试,坏代码根本上不了线

[配图:左边”手动”——开发者深夜对着终端逐条敲命令、满头大汗;右边”CI/CD”——开发者 push 完就去喝咖啡,流水线自动把代码送上线]

小结

  • 痛点:手动部署慢、易错、依赖人、难追溯、发现问题太晚。
  • CI = 持续集成:每次提交自动拉代码、测试、构建,尽早发现问题。
  • CD = 持续交付/部署:把验证过的成品自动发布到线上。
  • CI/CD 的价值:让”push 代码”到”上线”这条路变得自动、可靠、可追溯、人人可发

知道了它解决什么问题,下一章我们拆开看:一条 CI/CD 流水线,具体分哪几步、每步在干嘛。


下一章 → 07 - 一条 CI/CD 流水线的主流程