🚀 CI/CD 核心概念与实战指南
一句话总结:CI/CD 就是让代码从“写完”到“上线”全程自动化,把人工操作交给机器人,让您只负责写代码,剩下的交给流水线。
📖 目录
1. 什么是 CI/CD?
CI/CD 是现代软件开发的“自动化高速公路”,包含两个核心环节:
- CI (Continuous Integration):持续集成 —— 自动构建、测试、打包。
- CD (Continuous Delivery/Deployment):持续交付/部署 —— 自动发布到服务器。
目标:减少人工干预,加快迭代速度,降低上线风险。
2. 核心概念拆解
🏗️ CI:持续集成 (Continuous Integration)
关键词:
频繁提交、自动测试、快速反馈
- 做什么:
每当开发者推送代码(
git push),系统自动触发:- 拉取最新代码。
- 安装依赖(如
npm install)。 - 运行自动化测试(单元测试、lint 检查)。
- 构建产物(如生成
app.tar.gz包)。
- 核心价值:
- 早发现早治疗:代码有问题立刻报错,不用等到上线才发现。
- 避免“集成地狱”:大家频繁合并代码,冲突少,修复快。
🚀 CD:持续交付/部署 (Continuous Delivery/Deployment)
关键词:
自动发布、一键上线、无人值守
这里有两个细微差别:
-
持续交付 (Delivery):代码测试通过后,准备好上线,但需要人工点一下“确认”按钮才发布。(适合金融等严谨场景)
-
持续部署 (Deployment):代码测试通过后,直接自动发布到生产环境,无需人工干预。(适合互联网快速迭代)
-
做什么:
- 将 CI 阶段生成的包上传到服务器。
- 停止旧服务,解压新包,启动新服务。
- 发送通知(如钉钉/邮件):“上线成功!”
3. 通俗比喻:开餐馆 🍔
| 角色 | 传统模式 (无 CI/CD) | 现代模式 (有 CI/CD) |
|---|---|---|
| 厨师 (开发者) | 做菜 -> 自己打包 -> 骑电动车送外卖 -> 客户投诉再回去改 | 只做菜 -> 放入传送带 -> 机器人自动打包、质检、送货 |
| 质检员 | 靠厨师自觉,偶尔尝一口 | 机器人每道菜必检,有毒立刻报警 |
| 服务员 (运维) | 手动端盘子,容易洒 | 机器人自动送餐,稳如泰山 |
| 结果 | 累、慢、易出错 | 快、稳、省心 |
4. 为什么要用 CI/CD?
| 痛点 | 传统手工上线 | CI/CD 自动化 |
|---|---|---|
| 效率 | 每次上线耗时 30 分钟+ | 2 分钟自动完成 |
| 质量 | 人工操作易手滑(传错文件、配错环境) | 流程标准化,机器人不会累 |
| 频率 | 一周发版 1 次都嫌累 | 一天发版 10 次也轻松 |
| 回滚 | 出问题了手忙脚乱找备份 | 一键回滚到上一版本 |
| 心态 | 上线前紧张失眠 | 安心喝茶,坐等通知 |
5. 您的云效流水线实战映射
您在阿里云云效配置的流水线,就是典型的 CI/CD 流程:
| 流水线任务块 | 对应环节 | 实际动作 |
|---|---|---|
| 源代码 | 触发器 | 监听 git push,一旦有代码提交,立即唤醒流水线 |
| Node.js 构建 | CI (集成) | 1. npm install --production (装依赖)2. 打包代码为 .tar.gz (构建产物) |
| 主机部署 | CD (部署) | 1. 传输包到阿里云 ECS 2. 解压、停止旧进程、启动新进程 |
流程图示:
graph LR
A[您 git push 代码] --> B(云效流水线触发)
B --> C{CI: Node.js 构建}
C -->|npm install & 打包 | D[生成 app.tar.gz]
D --> E{CD: 主机部署}
E -->|上传 & 重启 | F[✅ 线上服务更新成功]
C -->|测试失败 | G[❌ 报错通知您]