当前位置: 首页 >  开发指南 >  项目开展CICD的实践探路

项目开展CICD的实践探路

导读:本文介绍了作者对CICD的理解以及在项目中开展CICD的几种场景,总结了每种场景实践的关键节点、带来的收益,以及结合具体项目开展的实际应用。读者可以借鉴本文中描述的场景,或借鉴文中提到的实践方式,在项目中开展CICD,为项目在持续集成部署上做具体的支撑。.1 前言.基于公司Bam

本文介绍了作者对CICD的理解以及在项目中开展CICD的几种场景,总结了每种场景实践的关键节点、带来的收益,以及结合具体项目开展的实际应用。读者可以借鉴本文中描述的场景,或借鉴文中提到的实践方式,在项目中开展CICD,为项目在持续集成部署上做具体的支撑。

1 前言

基于公司Bamboo、EOS,SonarQube平台,在项目中开展CICD持续集成与部署。介绍CICD开展的场景,项目中的实际应用,以及后续规划。

2 CICD基础概念

CICD 是持续集成(Continuous Integration)和持续部署(Continuous Deployment)简称。指在研发过程中自动执行一系列脚本来降低开发引入 bug 的概率,在新代码从开发到部署的过程中,尽量减少人工的介入。

CICD 核心:持续集成、持续部署、持续交付。

CI:Continuous Integration,表示持续集成。

指在向远程仓库 push 代码后,在这次提交合并入主分支前进行一系列测试,构建等流程。
假设现在有个应用的代码存储在 仓库上,每天开发都会 push 很多次提交,针对每次 push,你可以创建一系列脚本进行自动测试,降低往应用里引入错误的概率。它可以应用在包括开发分支在内的多个分支上。
持续集成过程中很重视自动化测试验证结果,以保障所有的提交在合并主线之后的质量问题,对可能出现的一些问题进行预警。

CD:Continuous Delivery,表示持续交付。

指在完成CI后可自动将已验证的代码发布到仓库。
持续交付的目标是拥有一个可随时部署到生产环境的代码库。

CD:Continuous Deployment,表示持续部署。

指在持续集成的基础上更进一步,指将推送指仓库默认分支代码部署到特定环境。
通过自动化的构建、测试和部署循环来快速交付高质量的产品。某种程度上代表了一个开发团队工程化的程度,任何修改通过了所有已有的工作流就会直接和客户见面,只有当一个修改在工作流中构建失败才能阻止它部署到产品线。

3 CICD的开展场景

3.1 编译部署

实现代码提交之后的自动编译-部署过程,取代j-one上构建-部署手动操作

内容:

  • 代码提交后的自动构建、自动部署、构建部署结果通知;

收益:

  • 去除Jone上代码构建完成后的手动部署操作中等待时间;

3.2 单元测试

开展基于Junit的单元测试

内容:

  • 针对后端代码,基于Junit编写单元测试脚本,开展单测,获取单测报告、jacoco代码覆盖率报告;

收益:

  • 提升测试覆盖率,提高代码质量;
  • 减少bug,快速定位bug;
  • 有限支撑重构;

3.3 代码扫描

实现基于SonarQube的代码质量检测

实现基于EOS的代码质量检测

内容:

  • 实现基于SonarQube、或公司平台EOS的代码扫描检测;
  • 代码提交自动触发代码扫描,最终生成报告、结果通知;
  • 扫描结果计入项目质量,记录跟踪问题,直至问题闭环解决。

收益:

  • 代码质量检测的手段丰富;
  • 多层次的自动化测试,提升代码质量;
  • 自动触发测试执行,缩减测试等待时间,提高效率,实现无人值守;

3.4 自动化测试

实现基于Python、EasyOne、DeepTest、Jmeter 的自动化测试。

内容:

  • 实现基于SonarQube的代码质量检测;
  • 实现全链路各环节的自动化测试;
  • 代码提交自动触发测试执行、生成报告、报告通知;

收益:

  • 多层次的自动化测试,提升代码质量;
  • 自动触发测试执行,缩减测试等待时间,提高效率,实现无人值守;

3.5 全链路测试探索

将上述单个场景进行组合形成全链路测试场景;
代码提交触发链路自动运行,以及报告生成、邮件发送。

4 项目实践

结合公司内部平台在实际项目中开展CICD。

4.1 公司内部平台

Bamboo
Bamboo是京东自研的一套CI/CD流水线解决方案,覆盖软件开发的完整生命周期。

EOS
EOS是技术与数据中台自主研发的代码扫描系统,通过扫描分析代码,定位到工程中不规范的编码片段并给出修改建议,能有效监督约束开发人员统一编码习惯,减少因编码不规范引起的低级错误,提高代码可读性,提高团队协作效率。

4.2 项目实际应用

1)编译-部署

对Jone上高频构建部署分支进行在Bamboo上搭建流水线,实现:
代码提交-调用Jone的构建-调用Jone的部署-结果通知

触发编译构建的几种方式:

  • 手动执行;
  • 代码提交触发执行;
  • 定时任务触发执行;
  • 级联其他流水线触发执行;

应用情况:

  • 组内所测试所覆盖都已部署相关流水线;
  • 支撑测试人员在所测项目中部署自动构建流水线,共计调用次数:364次。

2)单元测试

对后端项目开展单元测试,实现:
代码提交-maven构建-获取单测报告-结果通知

应用效果:

  • 极大简化了获取单测报告的过程,通过简单的过程即可针对项目开展单测、执行单测、并获取单测结果;
  • 支撑超过8个项目部署单测流水线,JDL-CRM权限系统单测有效提升率:20%

3)自动化测试

项目部署之后,开展自动化回归测试,用于项目上线前的回归测试,实现:
自动化测试-测试报告-测试结果通知

目前基于Python语言,依托Py第三方模块,实现脚本编写,集成到Bamboo平台,执行流水线,获取报告。

应用效果:

  • 负责在销服项目中开展上线前的UAT自动回归测试;

4)代码扫描

基于公司搭建的SonarQube、EOS平台,开展代码扫描,实现:
代码提交-代码扫描-扫描报告-问题手工记录行云

5 后续规划

CICD过程数据与质量效能数据相结合。
基于DeepTest开展更多项目的自动化测试,集成到BamBoo平台。
代码扫描在项目中的应用。

作者:京东物流 陈维

来源:京东云开发者社区 自猿其说Tech 转载请注明来源

内容
  • npm发包教程
    npm发包教程
    2023-12-11
    1-npm注册账号.访问npm官网注册账号,邮件验证激活账号.npm官网.2-项目npm配置.在项目下打开终端,初始化n
  • Gitlab Registries
    Gitlab Registrie
    2023-12-09
    在项目开发和部署过程中,我们常常需要一套私有仓库,比如 Code Repository、Package Reposito
  • git 常用指令与简单规范
    git 常用指令与简单规范
    2023-12-04
    1. 前言.随着前端项目数量、前端开发人员、前端业务的日渐增多,则非常有必要整理一份简单的 git 规范,来进行项目开发
  • git 常用命令
    git 常用命令
    2023-12-04
    自用命令.git命令.初始化git -> git init.1、新项目添加到dev分支中(新项目已放到本地.git所
  • 安全测试前置实践2-安全渗透测试
    安全测试前置实践2-安全渗透测试
    2023-12-04
    作者:京东物流 陈维.一、引言.本文我们将以围绕系统安全质量提升为目标,讲述在功能安全测试 &安全渗透测试上实践过程。.
  • SonarQube系列-通过配置扫描分析范围,聚焦关键问题
    SonarQube系列-通过配置
    2023-12-04
    在许多情况下,你可能不希望分析项目中每个源文件的各个方面。例如,项目可能包含生成的代码、库中的源代码或有意复制的代码。在
  • jenkins+linux+gitee+maven自动化集成部署项目
    jenkins+linux+gi
    2023-12-01
    jenkins+linux+gitee+maven自动化集成部署项目.一、jenkins 概述.1.1 Jenkins介
  • 时尚个性针织毛衣
    时尚个性针织毛衣
    2023-12-11
    时尚个性针织毛衣.时尚个性针织毛衣一直是秋冬季节的必备单品,不仅可以很好地保暖,还能展现出个性与时尚。无论是女性还是男性
  • 休闲简约短袖衬衫
    休闲简约短袖衬衫
    2023-12-21
    休闲简约短袖衬衫.现代人生活节奏快,休闲简约的穿着成为时尚潮流。短袖衬衫作为经典的休闲单品,一直备受时尚人士的青睐。它舒
  • 经典款皮鞋
    经典款皮鞋
    2023-12-06
    经典款皮鞋.经典款皮鞋一直是时尚界的永恒之选,不论是商务场合、休闲聚会还是正式场合,都能展现出绅士淑女的气质和优雅。今天
  • 修身弹力牛仔裤
    修身弹力牛仔裤
    2023-12-26
    修身弹力牛仔裤:展现你的魅力.一、时尚的必备单品.修身弹力牛仔裤一直都是时尚界的必备单品,它不仅可以展现出个人的魅力,还
  • 可爱儿童内衣套装,优质棉质,柔软透气,呵护宝宝肌肤
    可爱儿童内衣套装,优质棉质,柔软
    2024-01-05
    可爱儿童内衣套装,优质棉质,柔软透气,呵护宝宝肌肤.宝宝的皮肤是非常娇嫩的,所以选择合适的内衣套装对于宝宝的健康和舒适至
  • 优雅复古半身裙,散发优雅复古气息
    优雅复古半身裙,散发优雅复古气息
    2024-01-15
    优雅复古半身裙,散发优雅复古气息.复古是一种永不过时的时尚趋势,它总能让人们联想到过去的美好时光。而半身裙则是女性衣橱里
  • 时尚修身连衣裙,展现优雅女性魅力
    时尚修身连衣裙,展现优雅女性魅力
    2023-12-06
    时尚修身连衣裙,展现优雅女性魅力.时尚修身连衣裙一直是女性衣橱里的必备单品,不仅款式多样,而且能够展现出女性的优雅魅力。
  • 潮流风衣大衣,彰显都市时尚风采
    潮流风衣大衣,彰显都市时尚风采
    2023-12-16
    潮流风衣大衣,彰显都市时尚风采.潮流风衣大衣一直是时尚界备受追捧的单品之一。它既能为我们遮风挡雨,又能为我们穿出时尚感,
  • 暖心家居服套装,柔软舒适,可爱**形象,让宝宝安心入睡
    暖心家居服套装,柔软舒适,可爱*
    2023-12-16
    暖心家居服套装,让宝宝安心入睡.宝宝的睡眠质量对成长发育至关重要,而穿着舒适的家居服对宝宝的睡眠质量有着直接的影响。为了
  • 时尚儿童牛仔裤,经典款式,耐穿耐磨,让宝宝更有个性
    时尚儿童牛仔裤,经典款式,耐穿耐
    2024-01-10
    时尚儿童牛仔裤引领潮流.时尚儿童牛仔裤一直是儿童服装中的经典款式,不仅经典耐穿,而且可以展现宝宝的个性。随着时尚的发展,