周顺的技术博客

  • 首页
  • 榜上有名
  • 文章归档
  • 读者排行
  • 豆瓣书影
  • 友情链接
  • DevOps (4)
  • Docker (4)
  • k8s (9)
  • linux (11)
  • Mysql (9)
  • Python (2)
  • Redis (1)
  • Shell (6)
  • 主题 (0)
  • 未分类 (0)

CI/CD

  • xiaoteng
  • 2025-11-16
  • 0

持续集成(Continuous Integration,CI)

相关概念

张三,李四 => 持续集成(每天至少把写好的代码集成到main主分支中一次) => 编译(maven打包)、发布、自动化测试。

CI是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地发现集成错误。

持续集成的核心目的是尽早发现并解决问题,减少风险与浪费,提升开发敏捷性、缩短周期,保障产品上线后用户体验。

传统开发模式在模块开发完成后才集成测试,导致早期引入的 bug 到后期才暴露,定位困难,甚至需调整底层架构,严重影响进度与周期。

持续集成能在集成测试前发现问题,保障软件质量、降低风险,助力团队应对变化;其报告可清晰呈现项目进度、已实现功能、自动化测试覆盖及代码质量,让团队掌握真实项目状态。

总结

第一步,持续集成(Continuous Integration,CI)

1 提:开发人员提交编写好的代码;

2 拉:触发构建,从代码仓库拉取开发写好的代码,代码可以是 gitlab 或者 svn 都可以;

3 编:编译代码,生成 Docker 镜像或者 Jar 包等,如果是镜像,还可以配置上传到镜像仓库;

4 测:自动化测试中,可以对代码做单元测试、集成测试;

5 查:质量检查阶段,会查看流水线生成结果,把成功/失败结果反馈给开发人员;

记住五字诀:提、拉、编、测、查。后面的交付和部署,也类似。

持续交付(Continuous Delivery,CD)

相关概念

持续交付是软件开发中,以小颗粒度需求短周期频繁提交,侧重集成后在类生产环境测试并及时反馈的过程。

目的

  1. 开发过程的快速迭代,小步快跑,及时纠正偏离主线
  2. 小颗粒度实现,避免颗粒度大,出现问题解决麻烦
  3. 迅速反馈软件功能,避免方向性错误
  4. 团队角色(含客户)协作密切,减少时间浪费

总结

第二步,持续交付(Continuous Delivery,CD)

1 拿包:从 CI 接收构建产物:如 Docker 镜像或二进制文件。

2 测包:部署到测试环境,进行更复杂的测试,比如性能压测、安全漏洞扫描;

3 布包:团队确认、审批后,部署到生产环境;

持续部署(Continuous Deployment,CD)

相关概念

基于持续交付的基础上,把功能稳定,符合产品需求的版本有方法地部署至生产环境中。可以看作是持续交付的最后一环。

交付和部署的区别,就在于【测试环境】和【生产环境】。

总结

第三步,持续部署(Continuous Deployment,CD)

1 自动部署:通过工具(如 ArgoCD、Spinnaker)自动部署到生产环境;

2 监控状态:使用工具来监控系统状态,如 Zabbix、Prometheus、ELK;

3 失败回退:如果监测到故障或问题,可以在指定时间内,回退到上一版本,保证业务可用性;

持续发布(Continuous Release,CR)

相关概念

发布是周期性或不定期地对项目在部署后,进行整体软件版本的更新,例如,更新新功能或展示页面框架等。

目的

  1. 产品的快速迭代,小步快跑
  2. 适应市场变化
  3. 匹配市场策略
  4. 应对市场风险

总结

第四步,持续发布(Continuous Release,CR)

持续发布,是指周期性,或不定期地在项目部署后,进行整体软件版本的更新和发布。在这里,作为了解即可。

© 2026 周顺的技术博客
Theme by Wing
  • {{ item.name }}
  • {{ item.name }}