CI/CD 把"提交代码 → 自动测试 → 自动构建 → 自动部署"全流程自动化,让团队从"手动发布心惊胆战"变成"一键发布安心收工"。本讲梳理 CI/CD 的核心概念、流水线设计与落地实践。
手动部署容易漏步骤、环境不一致,发布一次翻车一次,全靠开发熬夜救火。
构建、测试、部署全靠人工,一次上线耗时大半天,版本迭代被卡死。
缺少自动测试把关,改一处崩一处,线上 bug 频发,用户怨声载道。
代码提交即触发构建与单元测试,问题第一时间暴露。
测试、Lint、覆盖率不达标自动拦截,质量可控可量化。
统一环境构建产物/镜像,杜绝"本地可以线上不行"。
测试环境、预发布、生产环境流水线化部署,可回滚。
流水线状态、构建日志、发布记录一目了然。
发布异常一键回滚到上一版本,损失降到最低。
工具没有绝对好坏,与团队和托管平台匹配最重要。
| 工具 | 集成方式 | 适合团队 | 特点 |
|---|---|---|---|
| GitHub Actions | GitHub 原生 | 开源/GitHub 用户 | 生态丰富、YAML 简单 |
| GitLab CI | GitLab 原生 | 自建 GitLab 团队 | 一体集成、自带 Runner |
| Jenkins | 插件生态 | 老牌/复杂流水线 | 灵活但维护成本高 |
| 阿里云效 / 流水线 | 云上托管 | 国内云原生团队 | 免运维、与云产品打通 |
| Gitee Go | Gitee 原生 | 国内 Gitee 用户 | 轻量、上手快 |
| 选型建议 | — | 优先选托管平台原生 | 减少自建运维成本 |
push/PR 事件触发流水线,不同分支走不同流程。
Lint、类型检查、单元测试、构建验证,质量门禁前移。
在统一环境构建并推送到制品库/镜像仓库。
按阶段部署到测试/预发布/生产,配置随环境注入。
部署后冒烟/健康检查,结果通知团队,异常自动回滚。
每天多次发布,自动化让迭代速度与质量兼得。
多分支并行开发,合并即验证,冲突与回归提前暴露。
自动化测试 + 门禁,让每次提交都有质量背书。
构建镜像 → 推送 → 部署到 K8s,全链路 GitOps。