CICD是什么
答案
CI/CD 是 持续集成(Continuous Integration) 和 持续部署/持续交付(Continuous Deployment/Delivery) 的简称,是一种软件开发实践,通过自动化构建、测试和部署流程,提高代码质量和交付效率。它依赖工具(如 Jenkins、GitLab CI)实现代码频繁集成和快速上线。
关键事实
- CI(持续集成):
- 开发者频繁将代码提交到共享仓库(如 Git)。
- 每次提交触发自动构建和测试,确保代码可集成。
- CD(持续部署/交付):
- 持续交付:自动化将通过测试的代码准备好部署到生产环境,需手动确认。
- 持续部署:自动部署到生产,无需人工干预。
- 目标:
- 减少集成冲突,提升软件质量,加速发布周期。
实现原理
CI 流程
- 开发者提交代码到版本控制系统(如 GitHub)。
- CI 服务器(如 Jenkins)检测变更。
- 触发自动化任务:
- 构建:编译代码(如
mvn build
)。 - 测试:运行单元测试、集成测试。
- 反馈结果:成功或失败通知团队。
CD 流程
- CI 成功后,进入部署阶段。
- 持续交付:
- 打包代码(如 JAR/WAR),上传到存储库。
- 等待手动部署。
- 持续部署:
- 自动部署到生产环境(如 Docker、K8s)。
- 监控:上线后检查健康状态。
示例(GitLab CI)
stages:
- build
- test
- deploy
build_job:
stage: build
script:
- mvn package
test_job:
stage: test
script:
- mvn test
deploy_job:
stage: deploy
script:
- echo "Deploy to production"
特点
- 优点:
- 快速反馈:问题早发现早修复。
- 自动化:减少人工错误。
- 高频发布:缩短交付周期。
- 缺点:
- 初期成本:搭建管道复杂。
- 依赖工具:需熟悉 Jenkins、CircleCI 等。
延伸与面试角度
- 工具:
- Jenkins、GitLab CI、GitHub Actions、CircleCI。
- 与 DevOps 关系:
- CI/CD 是 DevOps 核心实践,促进开发与运维协作。
- 实际应用:
- 微服务:每个服务独立 CI/CD。
- 蓝绿部署:CD 中实现零停机。
- 流程优化:
- 并行测试:缩短构建时间。
- 回滚机制:部署失败恢复。
- 面试点:
- 问“CI 好处”时,提集成冲突。
- 问“CD 区别”时,提交付 vs 部署。
总结
CI/CD 通过持续集成和自动部署实现高效开发,CI 确保代码质量,CD 加速上线。依赖自动化工具,广泛用于现代软件工程。面试时,可提 GitLab 示例或 DevOps 联系,展示理解深度。