关于cicd:项目开展CICD的实践探路-京东物流技术团队
本文介绍了作者对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)编译-部署 ...