基本概念
CI/CD旨在通过自动化流程提高代码质量、加快发布速度
- CI (Continuous Integration,持续集成)
 - CD(Continuous Delivery/Deployment,持续交付/持续部署)
 
CI 持续集成
目标
频繁加粗样式将代码合并到主干、尽早发现错误
流程
- 开发者提交代码到共享仓库,如GitLab/GitHub
 - 自动出发构建,编译、依赖安装
 - 运行自动化测试,单元测试、集成测试
 
优势
快速发现Bug、减少集成冲突、提高代码质量
CD 持续交付/部署
持续交付
手动通过CI后,自动打包成可发布的版本,如Docker镜像
 人工审批后手动触发部署到生产环境
持续部署
在CI基础上,自动部署到生产环境
 适用于高度自动化的云原生项目,如Netflix、GitHub
优势
快速发布、降低风险、灵活回滚
CI/CD工作流
以一个Web应用为例
- 代码提交➡️触发CI流水线
 - CI阶段:
 
- 安装依赖 
npm install - 运行测试 
npm test - 构建Docker镜像
 
- CD阶段:
 
- 推动镜像到仓库,如Docker Hub
 - 自动部署到测试环境
 - 手动批准➡️部署到生产环境(持续交付)
 - 或自动部署(持续部署)
 
常见的CI/CD工具
GitLab CI
特点:与GitLab深度集成,较简单
 部署方式:Runner基于容器/K8s
 适用场景:GitLab用户、云原生项目
Jenkins
特点:支持多插件,需额外配置,如GitHub插件,较复杂
 部署方式:Master/Agent架构
 适用场景:复杂企业级CI/CD、多平台集成