项目开展 CICD 的实践探路

本文介绍了作者对 CICD 的理解以及在项目中开展 CICD 的几种场景,总结了每种场景实践的关键节点、带来的收益,以及结合具体项目开展的实际应用 。读者可以借鉴本文中描述的场景,或借鉴文中提到的实践方式,在项目中开展 CICD,为项目在持续集成部署上做具体的支撑 。
1 前言基于公司 Bamboo、EOS,SonarQube 平台,在项目中开展 CICD 持续集成与部署 。介绍 CICD 开展的场景,项目中的实际应用,以及后续规划 。
2 CICD 基础概念CICD 是持续集成(Continuous Integration)和持续部署(Continuous Deployment)简称 。指在研发过程中自动执行一系列脚本来降低开发引入 bug 的概率,在新代码从开发到部署的过程中,尽量减少人工的介入 。
CICD 核心:持续集成、持续部署、持续交付 。

项目开展 CICD 的实践探路

文章插图
CI:Continuous Integration,表示持续集成 。
指在向远程仓库 push 代码后,在这次提交合并入主分支前进行一系列测试,构建等流程 。
假设现在有个应用的代码存储在 仓库上,每天开发都会 push 很多次提交,针对每次 push,你可以创建一系列脚本进行自动测试,降低往应用里引入错误的概率 。它可以应用在包括开发分支在内的多个分支上 。
持续集成过程中很重视自动化测试验证结果,以保障所有的提交在合并主线之后的质量问题,对可能出现的一些问题进行预警 。
CD:Continuous Delivery,表示持续交付 。
指在完成 CI 后可自动将已验证的代码发布到仓库 。
持续交付的目标是拥有一个可随时部署到生产环境的代码库 。
CD:Continuous Deployment,表示持续部署 。
指在持续集成的基础上更进一步,指将推送指仓库默认分支代码部署到特定环境 。
通过自动化的构建、测试和部署循环来快速交付高质量的产品 。某种程度上代表了一个开发团队工程化的程度,任何修改通过了所有已有的工作流就会直接和客户见面,只有当一个修改在工作流中构建失败才能阻止它部署到产品线 。
3 CICD 的开展场景3.1 编译部署
实现代码提交之后的自动编译 - 部署过程,取代 j-one 上构建 - 部署手动操作
项目开展 CICD 的实践探路

文章插图
内容:
  • 代码提交后的自动构建、自动部署、构建部署结果通知;
收益:
  • 去除 Jone 上代码构建完成后的手动部署操作中等待时间;
3.2 单元测试
开展基于 Junit 的单元测试
项目开展 CICD 的实践探路

文章插图
内容:
  • 针对后端代码,基于 Junit 编写单元测试脚本,开展单测,获取单测报告、jacoco 代码覆盖率报告;
收益:
  • 提升测试覆盖率,提高代码质量;
  • 减少 bug,快速定位 bug;
  • 有限支撑重构;
3.3 代码扫描
实现基于 SonarQube 的代码质量检测
项目开展 CICD 的实践探路

文章插图
实现基于 EOS 的代码质量检测
项目开展 CICD 的实践探路

文章插图
内容:
  • 实现基于 SonarQube、或公司平台 EOS 的代码扫描检测;
  • 代码提交自动触发代码扫描,最终生成报告、结果通知;
  • 扫描结果计入项目质量,记录跟踪问题,直至问题闭环解决 。
收益:
  • 代码质量检测的手段丰富;
  • 多层次的自动化测试,提升代码质量;
  • 自动触发测试执行,缩减测试等待时间,提高效率,实现无人值守;
3.4 自动化测试
实现基于 Python/ target=_blank class=infotextkey>Python、EasyOne、DeepTest、Jmeter 的自动化测试 。
项目开展 CICD 的实践探路

文章插图
内容:
  • 实现基于 SonarQube 的代码质量检测;
  • 实现全链路各环节的自动化测试;
  • 代码提交自动触发测试执行、生成报告、报告通知;
收益:
  • 多层次的自动化测试,提升代码质量;
  • 自动触发测试执行,缩减测试等待时间,提高效率,实现无人值守;
3.5 全链路测试探索
将上述单个场景进行组合形成全链路测试场景;
代码提交触发链路自动运行,以及报告生成、邮件发送 。
项目开展 CICD 的实践探路

文章插图
4 项目实践结合公司内部平台在实际项目中开展 CICD 。


推荐阅读