CN116954628A - 一种支持cicd的自动化代码合并方法及系统 - Google Patents
一种支持cicd的自动化代码合并方法及系统 Download PDFInfo
- Publication number
- CN116954628A CN116954628A CN202310693732.2A CN202310693732A CN116954628A CN 116954628 A CN116954628 A CN 116954628A CN 202310693732 A CN202310693732 A CN 202310693732A CN 116954628 A CN116954628 A CN 116954628A
- Authority
- CN
- China
- Prior art keywords
- code
- rule
- test
- codes
- examination
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 83
- 238000012360 testing method Methods 0.000 claims abstract description 106
- 230000008569 process Effects 0.000 claims abstract description 15
- 230000002159 abnormal effect Effects 0.000 claims abstract description 8
- 238000007689 inspection Methods 0.000 claims description 22
- 238000003860 storage Methods 0.000 claims description 13
- 230000015654 memory Effects 0.000 claims description 11
- 238000010276 construction Methods 0.000 claims description 10
- 230000010354 integration Effects 0.000 claims description 8
- 238000004590 computer program Methods 0.000 claims description 6
- 230000009471 action Effects 0.000 claims description 4
- 230000003068 static effect Effects 0.000 claims description 4
- 238000004422 calculation algorithm Methods 0.000 claims description 3
- 238000013461 design Methods 0.000 claims description 3
- 238000001514 detection method Methods 0.000 claims description 3
- 238000011156 evaluation Methods 0.000 claims description 3
- 238000001914 filtration Methods 0.000 claims description 3
- 230000006872 improvement Effects 0.000 claims description 3
- 238000005457 optimization Methods 0.000 claims description 3
- 238000004088 simulation Methods 0.000 claims description 3
- 230000003936 working memory Effects 0.000 claims description 3
- 238000012423 maintenance Methods 0.000 abstract description 6
- 238000010586 diagram Methods 0.000 description 9
- 238000007726 management method Methods 0.000 description 7
- 238000012384 transportation and delivery Methods 0.000 description 4
- 238000012550 audit Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 2
- 238000004806 packaging method and process Methods 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000003339 best practice Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种支持CICD的自动化代码合并方法及系统包括:开发人员编写完成代码后,将代码提交到指定的分支,根据业务需求设计自动化决策方法;对提交的代码进行审查,采用自动化脚本执行代码的编译、构建和单元测试,并根据自动化脚本的执行结果生成审查及测试结果报告;将审查及测试结果报告自动发送至指定账户,并将自动化脚本的执行过程和结果输出至日志文件,根据测试结果选择回滚代码或进行部署测试的构建;本发明提供的方法使用自动化决策可以自动执行业务规则、自动检测和响应异常情况,提高业务效率,更好地满足业务需求,能够及时并迅速定位代码错误位置,大大降低维护成本。
Description
技术领域
本发明涉及软件开发技术领域,具体为一种支持CICD的自动化代码合并方法及系统。
背景技术
随着国网公司能源互联网企业建设业务系统开发测试及维护人员的增加,在代码编写、提交及维护过程中,开发人员的代码质量、基础性能、测试覆盖率无法保证,合并后容易导致代码质量、完整性、稳定性和安全性出现问题,此外自动化代码合并的质量和稳定性受到开发人员的代码质量和测试覆盖率等因素的影响,如果代码质量较差或测试不充分,可能会导致合并后的代码出现问题。
为提高研发和测试效能,加强云平台项目代码的管理规范,需要在持续集成、持续交付的过程中,对提交的代码进行自动化审查及合并,提高开发人员的工作效率和代码质量,减少人力和时间成本,降低程序运行中出现问题的风险。
发明内容
本部分的目的在于概述本发明的实施例的一些方面以及简要介绍一些较佳实施例。在本部分以及本申请的说明书摘要和发明名称中可能会做些简化或省略以避免使本部分、说明书摘要和发明名称的目的模糊,而这种简化或省略不能用于限制本发明的范围。
鉴于上述存在的问题,提出了本发明。
本发明实施例的第一方面,提供一种支持CICD的自动化代码合并方法,包括:开发人员编写完成代码后,将代码提交到指定的分支,根据业务需求设计自动化决策方法;对提交的代码进行审查,采用自动化脚本执行所述代码的编译、构建和单元测试,并根据所述自动化脚本的执行结果生成审查及测试结果报告;将所述审查及测试结果报告自动发送至指定账户,并将所述自动化脚本的执行过程和结果输出至日志文件,根据测试结果选择回滚代码或进行部署测试的构建。
作为本发明所述的支持CICD的自动化代码合并方法的一种优选方案,其中:所述自动化决策方法包括规则引擎设置和规则引擎推理,所述规则引擎设置包括,
定义初始规则和逻辑,根据不同语言设置不同的规则配置;
按照各自的业务,配置对应的业务审核规则及逻辑;
根据云平台业务规则和逻辑设计规则模型,所述规则模型包括规则库、规则集、规则等级、规则依赖关系、规则结果、规则结构;
根据所述规则模型,对Java项目使用开源规则引擎框架Drools、API及管理界面实现规则引擎,创建规则引擎对象,向所述规则引擎中加载规则集或更换规则集,向所述规则引擎提交需要被规则集处理的数据对象集合,使用KieContainer加载规则文件,KieSession执行所述规则文件内的规则,并导出引擎执行结果,再从引擎中撤出处理过的数据;
设置规则间的依赖关系及业务逻辑,将规则引擎集成到应用程序中,并对所述规则引擎进行测试和优化。
作为本发明所述的支持CICD的自动化代码合并方法的一种优选方案,其中:所述规则引擎推理包括,
对初始数据进行过滤,将所述过滤后的数据输入至工作内存,利用Rete算法将规则库的规则和数据进行比较;
若执行规则存在冲突,则需同时激活多个规则,并将冲突的规则放入冲突集合中;
在解决所述冲突后,激活的规则按顺序放入规则执行队列,执行队列中的规则,并将计算后的结果存入缓存中;
重复上述步骤,直到执行完队列中所有的规则。
作为本发明所述的支持CICD的自动化代码合并方法的一种优选方案,其中:所述对提交的代码进行审查包括,
用户上传代码到版本控制系统GitLab代码库后,集成工具CICD定时抓取代码库的代码变更并下载代码库及依赖;
调用静态代码检测工具进行代码审查,并指定审查代码路径和审查规则;
使用覆盖率工具Jacoco自动评估代码圈复杂度、代码行数、注释行数,从而评估可维护性指数;
检查并评估完成后,输出审查失败日志,所述审查失败日志包括代码所属文件位置、所属方法、所属行数及其依赖,再输出并生成HTML格式的代码审查报告文件,用户根据所述代码审查报告文件中的问题和错误进行分析,确定问题的严重程度和紧急性,进行代码改进和优化。
作为本发明所述的支持CICD的自动化代码合并方法的一种优选方案,其中:包括,
所述代码的编译、构建和单元测试主要包括白盒测试中的分支覆盖测试、方法覆盖测试以及集成部署后的接口自动化测试;
针对代码的分支语句,设计分支覆盖测试用例,以测试不同的分支路径;
针对代码所有的内部方法调用,设计测试用例,对调用外部方法的代码设计Mock模拟外部方法返回值和异常的用例;
针对部署到目标服务器的应用,设计接口自动化测试用例及运行逻辑;
使用Jacoco运行项目的测试用例,生成测试用例的覆盖率报告,以评估测试用例的质量和覆盖程度。
作为本发明所述的支持CICD的自动化代码合并方法的一种优选方案,其中:所述审查及测试结果报告包括代码测试覆盖率、测试通过率、审查内容及位置、审查结果。
作为本发明所述的支持CICD的自动化代码合并方法的一种优选方案,其中:自动化回滚包括代码回滚和部署回滚两种情况;
在所述代码回滚方面,当代码合并时系统会自动进行规则引擎、代码自动审查和自动化测试的审查,若任何一项审查失败,则系统会发送失败邮件及报告到构建用户和管理人员的账户,并自动进行代码回滚;
在所述部署回滚方面,当代码审查通过后,系统会通过CICD持续集成和构建程序将代码部署到目标服务器,在所述目标服务器上,系统会执行接口自动化测试用例,并输出测试报告,若存在失败用例,则系统会自动对部署的版本进行版本回滚。
本发明实施例的第二方面,提供一种支持CICD的自动化代码合并系统,包括:
自动化决策单元,用于在开发人员编写完成代码后,将代码提交到指定的分支,根据业务需求设计决策变量,包括规则条件、规则动作和规则执行顺序;
审查测试单元,用于对提交的代码进行审查,采用自动化脚本执行所述代码的编译、构建和单元测试,并根据所述自动化脚本的执行结果生成审查及测试结果报告;
回滚部署单元,用于将所述审查及测试结果报告自动发送至指定账户,并将所述自动化脚本的执行过程和结果输出至日志文件,根据测试结果选择回滚代码或进行部署测试的构建。
本发明实施例的第三方面,提供一种设备,所述设备包括,
处理器;
用于存储处理器可执行指令的存储器;
所述处理器被配置为调用所述存储器存储的指令,以执行本发明任一实施例所述的方法。
本发明实施例的第四方面,提供一种计算机可读存储介质,其上存储有计算机程序指令,包括:
所述计算机程序指令被处理器执行时实现如本发明任一实施例所述的方法。
本发明的有益效果:本发明提供一种CICD的自动化代码合并方法及系统,适用于现今支持CICD的自动化代码合并的项目代码管理方法,大大降低维护成本,及时并迅速定位代码错误位置;本发明使用自动化决策可以自动执行业务规则、自动检测和响应异常情况,提高业务效率,更好地满足业务需求;此外,本发明提供的自动化回滚可以帮助团队快速恢复到之前正确的版本,并减少人工干预的错误可能性,这一过程可以加快应用程序的交付速度,同时提高应用程序的可靠性和稳定性。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。其中:
图1为本发明提供的一种支持CICD的自动化代码合并方法及系统的整体流程图;
图2为本发明提供的一种支持CICD的自动化代码合并方法及系统的规则引擎设置结构框图;
图3为本发明提供的一种支持CICD的自动化代码合并方法及系统的拉取代码分支示意图;
图4为本发明提供的一种支持CICD的自动化代码合并方法及系统的搜索代码分支示意图;
图5为本发明提供的一种支持CICD的自动化代码合并方法及系统的新建代码分支示意图;
图6为本发明提供的一种支持CICD的自动化代码合并方法及系统的自动化打包构建示意图;
图7为本发明提供的一种支持CICD的自动化代码合并方法及系统的自动化部署示意图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合说明书附图对本发明的具体实施方式做详细的说明,显然所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明的保护的范围。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是本发明还可以采用其他不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似推广,因此本发明不受下面公开的具体实施例的限制。
其次,此处所称的“一个实施例”或“实施例”是指可包含于本发明至少一个实现方式中的特定特征、结构或特性。在本说明书中不同地方出现的“在一个实施例中”并非均指同一个实施例,也不是单独的或选择性的与其他实施例互相排斥的实施例。
本发明结合示意图进行详细描述,在详述本发明实施例时,为便于说明,表示器件结构的剖面图会不依一般比例作局部放大,而且所述示意图只是示例,其在此不应限制本发明保护的范围。此外,在实际制作中应包含长度、宽度及深度的三维空间尺寸。
同时在本发明的描述中,需要说明的是,术语中的“上、下、内和外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一、第二或第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
本发明中除非另有明确的规定和限定,术语“安装、相连、连接”应做广义理解,例如:可以是固定连接、可拆卸连接或一体式连接;同样可以是机械连接、电连接或直接连接,也可以通过中间媒介间接相连,也可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
实施例1
参照图1~2为本发明的一个实施例,提供了一种支持CICD的自动化代码合并方法,基于CICD集成执行步骤,结合自动化决策与代码质量监控,可以快速处理和分析大量数据,降低人为因素导致的代码错误,减少代码合并过程中可能出现的问题,提高代码质量和稳定性,结合报告的输出和日志分析,配置邮件通知功能,在发现代码质量问题时及时通知开发人员,提高处理效率,具体步骤包括:
S1:开发人员编写完成代码后,将代码提交到指定的分支,根据业务需求设计自动化决策方法。需要说明的是:
自动化决策方法可以快速处理和分析大量数据,降低人为因素导致的代码错误,决定代码合并的时间,减少人力和时间成本,主要包括规则引擎设置和规则引擎推理;
具体的,规则引擎设置包括,
定义初始规则和逻辑,根据不同语言设置不同的规则配置;
按照各自的业务,配置对应的业务审核规则及逻辑,如为指定Java项目创建规则文件,文件存储于规则库,每个规则文件内包含一组规则,每个规则包含规则名称、触发条件和执行动作,使用KieContainer加载规则文件,KieSession执行规则文件内的规则;
根据云平台业务规则和逻辑设计规则模型,包括规则库、规则集、规则等级、规则依赖关系、规则结果、规则结构;
根据规则模型,对Java项目使用开源规则引擎框架Drools、API及管理界面实现规则引擎,创建规则引擎对象,向规则引擎中加载规则集或更换规则集,向规则引擎提交需要被规则集处理的数据对象集合,使用KieContainer加载规则文件,KieSession执行规则文件内的规则,并导出引擎执行结果,再从引擎中撤出处理过的数据;
设置规则间的依赖关系及业务逻辑,将规则引擎集成到应用程序中,以便应用程序可以通过规则引擎来自动化执行业务规则和逻辑;
对规则引擎进行测试和优化,以确保规则引擎的正确性、稳定性和性能。
进一步的,为提高匹配效率,需要将处理任务分解为多个子任务,对子任务进行分布式处理,规则引擎推理处理过程如下:
对初始数据进行过滤,减少匹配数量和计算量;
将过滤后的数据输入至工作内存,利用Rete算法将规则库的规则和数据进行比较;
若执行规则存在冲突,则需同时激活多个规则,并将冲突的规则放入冲突集合中;
在解决冲突后,激活的规则按顺序放入规则执行队列,执行队列中的规则,并将计算后的结果存入缓存中,减少规则条件匹配和推理时间;
重复上述步骤,直到执行完队列中所有的规则;
应说明的,根据规则引擎推理结果,能自动检测并响应项目代码存在的异常情况,并触发相应的告警,告知对应人员,进行处理与维护。
S2:对提交的代码进行审查,采用自动化脚本执行代码的编译、构建和单元测试,并根据自动化脚本的执行结果生成审查及测试结果报告。需要说明的是:
对提交的代码进行审查包括,
用户上传代码到版本控制系统GitLab代码库后,集成工具CICD定时抓取代码库的代码变更并下载代码库及依赖;
调用静态代码检测工具进行代码审查,并指定审查代码路径和审查规则,以确保代码符合团队的编码规范和最佳实践;
使用覆盖率工具Jacoco自动评估代码圈复杂度、代码行数、注释行数,从而评估可维护性指数,协助评估代码质量和问题;
检查并评估完成后,输出审查失败日志,审查失败日志包括代码所属文件位置、所属方法、所属行数及其依赖,再输出并生成HTML格式的代码审查报告文件,用户根据代码审查报告文件中的问题和错误进行分析,确定问题的严重程度和紧急性,进行代码改进和优化;
进一步的,代码的编译、构建和单元测试主要包括白盒测试中的分支覆盖测试、方法覆盖测试以及集成部署后的接口自动化测试;
针对代码的分支语句,设计分支覆盖测试用例,以测试不同的分支路径;
针对代码所有的内部方法调用,设计测试用例,对调用外部方法的代码设计Mock模拟外部方法返回值和异常的用例;
针对部署到目标服务器的应用,设计接口自动化测试用例及运行逻辑,以确保程序可正常运行;
使用Jacoco运行项目的测试用例,生成测试用例的覆盖率报告,以评估测试用例的质量和覆盖程度,从而及早发现和解决代码中的问题和错误,提高代码质量,减少后期维护成本;
再进一步的,审查及测试结果报告包括代码测试覆盖率、测试通过率、审查内容及位置、审查结果。
S3:将审查及测试结果报告自动发送至指定账户,并将自动化脚本的执行过程和结果输出至日志文件,根据测试结果选择回滚代码或进行部署测试的构建。需要说明的是:
自动化回滚包括代码回滚和部署回滚两种情况;
在代码回滚方面,当代码合并时系统会自动进行规则引擎、代码自动审查和自动化测试的审查,若任何一项审查失败,则系统会发送失败邮件及报告到构建用户和管理人员的账户,并自动进行代码回滚,以确保部署的代码质量;
在部署回滚方面,当代码审查通过后,系统会通过CICD持续集成和构建程序将代码部署到目标服务器,在目标服务器上,系统会执行接口自动化测试用例,并输出测试报告,若存在失败用例,则系统会自动对部署的版本进行版本回滚,以确保部署的应用程序能够正常运行;
应说明的,自动化回滚可以帮助团队快速恢复到之前正确的版本,并减少人工干预的错误可能性。这一过程可以加快应用程序的交付速度,同时提高应用程序的可靠性和稳定性。
应说明的,本发明提供一种CICD的自动化代码合并方法及系统,适用于现今支持CICD的自动化代码合并的项目代码管理方法,大大降低维护成本,及时并迅速定位代码错误位置;本发明使用自动化决策可以自动执行业务规则、自动检测和响应异常情况,提高业务效率,更好地满足业务需求;此外,本发明提供的自动化回滚可以帮助团队快速恢复到之前正确的版本,并减少人工干预的错误可能性,这一过程可以加快应用程序的交付速度,同时提高应用程序的可靠性和稳定性。
本发明公开的第二方面,
提供一种支持CICD的自动化代码合并系统,包括:
自动化决策单元,用于在开发人员编写完成代码后,将代码提交到指定的分支,根据业务需求设计决策变量,包括规则条件、规则动作和规则执行顺序;
审查测试单元,用于对提交的代码进行审查,采用自动化脚本执行代码的编译、构建和单元测试,并根据自动化脚本的执行结果生成审查及测试结果报告;
回滚部署单元,用于将审查及测试结果报告自动发送至指定账户,并将自动化脚本的执行过程和结果输出至日志文件,根据测试结果选择回滚代码或进行部署测试的构建。
本发明公开的第三方面,
提供一种设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,处理器被配置为调用存储器存储的指令,以执行前述中任意一项的方法。
本发明公开的第四方面,
提供一种计算机可读存储介质,其上存储有计算机程序指令,包括:
计算机程序指令被处理器执行时实现前述中任意一项的方法。
本发明可以是方法、装置、系统和/或计算机程序产品,计算机程序产品可以包括计算机可读存储介质,其上载有用于执行本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
实施例2
参照图3~7为本发明的第二个实施例,该实施例不同于第一个实施例的是,提供了一种支持CICD的自动化代码合并方法及系统的验证测试,为对本方法中采用的技术效果加以验证说明。
本实施例在开发人员编写完成代码后,将代码提交到指定的分支,根据业务需求设计自动化决策方法,如图3~5所示为拉取、搜索、新建代码分支的示意图,接着对提交的代码进行审查,采用自动化脚本执行代码的编译、构建和单元测试,并根据自动化脚本的执行结果生成审查及测试结果报告,将审查及测试结果报告自动发送至指定账户,并将自动化脚本的执行过程和结果输出至日志文件,根据测试结果选择回滚代码或进行部署测试的构建,如图6所示为自动化打包构建示意图,如图7所示为自动化部署示意图;此外,本实施例对自动化代码审查和测试进行实验,结果如表1所示;
表1:自动化脚本执行结果数据。
由表1可知,本发明提供的方法使用自动化决策可以自动执行业务规则、自动检测和响应异常情况,能够提高业务效率,更好地满足业务需求,及时并迅速定位代码错误位置,大大降低维护成本。
应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。
Claims (10)
1.一种支持CICD的自动化代码合并方法,其特征在于,包括:
开发人员编写完成代码后,将代码提交到指定的分支,根据业务需求设计自动化决策方法;
对提交的代码进行审查,采用自动化脚本执行所述代码的编译、构建和单元测试,并根据所述自动化脚本的执行结果生成审查及测试结果报告;
将所述审查及测试结果报告自动发送至指定账户,并将所述自动化脚本的执行过程和结果输出至日志文件,根据测试结果选择回滚代码或进行部署测试的构建。
2.如权利要求1所述的支持CICD的自动化代码合并方法,其特征在于,所述自动化决策方法包括规则引擎设置和规则引擎推理,所述规则引擎设置包括,
定义初始规则和逻辑,根据不同语言设置不同的规则配置;
按照各自的业务,配置对应的业务审核规则及逻辑;
根据云平台业务规则和逻辑设计规则模型,所述规则模型包括规则库、规则集、规则等级、规则依赖关系、规则结果、规则结构;
根据所述规则模型,对Java项目使用开源规则引擎框架Drools、API及管理界面实现规则引擎,创建规则引擎对象,向所述规则引擎中加载规则集或更换规则集,向所述规则引擎提交需要被规则集处理的数据对象集合,使用KieContainer加载规则文件,KieSession执行所述规则文件内的规则,并导出引擎执行结果,再从引擎中撤出处理过的数据;
设置规则间的依赖关系及业务逻辑,将规则引擎集成到应用程序中,并对所述规则引擎进行测试和优化。
3.如权利要求2所述的支持CICD的自动化代码合并方法,其特征在于:所述规则引擎推理包括,
对初始数据进行过滤,将所述过滤后的数据输入至工作内存,利用Rete算法将规则库的规则和数据进行比较;
若执行规则存在冲突,则需同时激活多个规则,并将冲突的规则放入冲突集合中;
在解决所述冲突后,激活的规则按顺序放入规则执行队列,执行队列中的规则,并将计算后的结果存入缓存中;
重复上述步骤,直到执行完队列中所有的规则。
4.如权利要求1所述的支持CICD的自动化代码合并方法,其特征在于:所述对提交的代码进行审查包括,
用户上传代码到版本控制系统GitLab代码库后,集成工具CICD定时抓取代码库的代码变更并下载代码库及依赖;
调用静态代码检测工具进行代码审查,并指定审查代码路径和审查规则;
使用覆盖率工具Jacoco自动评估代码圈复杂度、代码行数、注释行数,从而评估可维护性指数;
检查并评估完成后,输出审查失败日志,所述审查失败日志包括代码所属文件位置、所属方法、所属行数及其依赖,再输出并生成HTML格式的代码审查报告文件,用户根据所述代码审查报告文件中的问题和错误进行分析,确定问题的严重程度和紧急性,进行代码改进和优化。
5.如权利要求4所述的支持CICD的自动化代码合并方法,其特征在于:包括,
所述代码的编译、构建和单元测试主要包括白盒测试中的分支覆盖测试、方法覆盖测试以及集成部署后的接口自动化测试;
针对代码的分支语句,设计分支覆盖测试用例,以测试不同的分支路径;
针对代码所有的内部方法调用,设计测试用例,对调用外部方法的代码设计Mock模拟外部方法返回值和异常的用例;
针对部署到目标服务器的应用,设计接口自动化测试用例及运行逻辑;
使用Jacoco运行项目的测试用例,生成测试用例的覆盖率报告,以评估测试用例的质量和覆盖程度。
6.如权利要求5所述的支持CICD的自动化代码合并方法,其特征在于:所述审查及测试结果报告包括代码测试覆盖率、测试通过率、审查内容及位置、审查结果。
7.如权利要求6所述的支持CICD的自动化代码合并方法,其特征在于:自动化回滚包括代码回滚和部署回滚两种情况;
在所述代码回滚方面,当代码合并时系统会自动进行规则引擎、代码自动审查和自动化测试的审查,若任何一项审查失败,则系统会发送失败邮件及报告到构建用户和管理人员的账户,并自动进行代码回滚;
在所述部署回滚方面,当代码审查通过后,系统会通过CICD持续集成和构建程序将代码部署到目标服务器,在所述目标服务器上,系统会执行接口自动化测试用例,并输出测试报告,若存在失败用例,则系统会自动对部署的版本进行版本回滚。
8.一种支持CICD的自动化代码合并系统,其特征在于,包括:
自动化决策单元,用于在开发人员编写完成代码后,将代码提交到指定的分支,根据业务需求设计决策变量,包括规则条件、规则动作和规则执行顺序;
审查测试单元,用于对提交的代码进行审查,采用自动化脚本执行所述代码的编译、构建和单元测试,并根据所述自动化脚本的执行结果生成审查及测试结果报告;
回滚部署单元,用于将所述审查及测试结果报告自动发送至指定账户,并将所述自动化脚本的执行过程和结果输出至日志文件,根据测试结果选择回滚代码或进行部署测试的构建。
9.一种设备,其特征在于,所述设备包括,
处理器;
用于存储处理器可执行指令的存储器;
所述处理器被配置为调用所述存储器存储的指令,以执行权利要求1~7中任一所述的方法。
10.一种计算机可读存储介质,其上存储有计算机程序指令,其特征在于,所述计算机程序指令被处理器执行时实现权利要求1~7中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310693732.2A CN116954628A (zh) | 2023-06-13 | 2023-06-13 | 一种支持cicd的自动化代码合并方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310693732.2A CN116954628A (zh) | 2023-06-13 | 2023-06-13 | 一种支持cicd的自动化代码合并方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116954628A true CN116954628A (zh) | 2023-10-27 |
Family
ID=88457308
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310693732.2A Pending CN116954628A (zh) | 2023-06-13 | 2023-06-13 | 一种支持cicd的自动化代码合并方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116954628A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117609100A (zh) * | 2024-01-17 | 2024-02-27 | 北京智麟科技有限公司 | 一种自动化代码合并及部署方法 |
-
2023
- 2023-06-13 CN CN202310693732.2A patent/CN116954628A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117609100A (zh) * | 2024-01-17 | 2024-02-27 | 北京智麟科技有限公司 | 一种自动化代码合并及部署方法 |
CN117609100B (zh) * | 2024-01-17 | 2024-04-23 | 北京智麟科技有限公司 | 一种自动化代码合并及部署方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Gurbuz et al. | Model-based testing for software safety: a systematic mapping study | |
US11662997B2 (en) | Systems and methods for software and developer management and evaluation | |
Jiang et al. | Co-evolution of infrastructure and source code-an empirical study | |
US11907107B2 (en) | Auto test generator | |
AU2010350247B2 (en) | Code inspection executing system for performing a code inspection of ABAP source codes | |
Abdalkareem et al. | Which commits can be CI skipped? | |
AU2019384194A1 (en) | Automation of task identification in a software lifecycle | |
US9535821B1 (en) | Displaying violated coding rules in source code | |
Panesar-Walawege et al. | Characterizing the chain of evidence for software safety cases: A conceptual model based on the IEC 61508 standard | |
AU2018202153B2 (en) | System and method for tool chain data capture through parser for empirical data analysis | |
Rahman et al. | Gang of eight: A defect taxonomy for infrastructure as code scripts | |
CN109491663A (zh) | 代码审查方法及装置 | |
Levin et al. | The co-evolution of test maintenance and code maintenance through the lens of fine-grained semantic changes | |
US10204028B2 (en) | Rule spaces and architecture root detection | |
CN106776326B (zh) | 一种数据分析模型的建模方法及系统 | |
CN116954628A (zh) | 一种支持cicd的自动化代码合并方法及系统 | |
Maksimov et al. | A survey of tool-supported assurance case assessment techniques | |
Marinescu | How good is genetic programming at predicting changes and defects? | |
JP2012181666A (ja) | 情報処理装置、情報処理方法及び情報処理プログラム | |
Wu et al. | Assessing the quality of industrial avionics software: an extensive empirical evaluation | |
Hotomski et al. | Aligning requirements and acceptance tests via automatically generated guidance | |
Ramdoo et al. | Strategies to reduce rework in software | |
Rapos et al. | SimPact: Impact analysis for simulink models | |
Mordinyi et al. | Exploring traceability links via issues for detailed requirements coverage reports | |
Rahman et al. | Categorizing defects in infrastructure as code |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |