一种分布式持续集成方法及装置制造方法及图纸

技术编号:19098484 阅读:25 留言:0更新日期:2018-10-03 02:38
本发明专利技术公开了一种分布式持续集成方法,用于提高持续集成中的测试速度,该方法包括:获取源代码和测试代码;编译所述源代码生成源代码包;将所述测试代码分解为多个测试代码包;当所述测试代码包的数量大于配置值时,将各个所述测试代码包以及所述源代码包分别发送给不同的测试执行端,以使所述测试执行端编译并执行接收到的所述测试代码包以生成所述源代码的测试结果;接收所述源代码的测试结果。本发明专利技术还公开了一种分布式持续集成装置。

【技术实现步骤摘要】
一种分布式持续集成方法及装置
本专利技术涉及计算机
,具体涉及一种分布式持续集成方法及装置。
技术介绍
持续集成是一种软件开发时间,指开发人员频繁地(一天多次)将代码集成到主干,每次集成通过自动化的流程进行编译、自动化测试、发布等环节。在持续集成中,如果能越快完成持续集成的流程,相关人员就能越快得到反馈,就能在持续集成实践中得到越大的好处。在现有技术中,持续集成流程中的各环节例如编译环节、自动化测试环节均运行在一台服务器上。在这种情况下,如果测试数量比较庞大的话,自动化测试环节运行时间会很比较长,导致得到持续集成结果反馈的速度较慢,从而影响开发效率,且在运行自动化环节的过程中服务器会一直被占用,无法响应其他任务。
技术实现思路
有鉴于此,本专利技术提供一种分布式持续集成方法及装置,以解决现有技术中在持续集成过程中运行自动化测试的时间较长,导致持续集成效率较低的技术问题。为解决上述问题,本专利技术提供的技术方案如下:一种分布式持续集成方法,所述方法包括:获取源代码和测试代码;编译所述源代码生成源代码包;将所述测试代码分解为多个测试代码包;当所述测试代码包的数量大于配置值时,将各个所述测试代码包以及所述源代码包分别发送给不同的测试执行端,以使所述测试执行端编译并执行接收到的所述测试代码包以生成所述源代码的测试结果;接收所述源代码的测试结果。相应的,所述方法还包括:判断所述测试代码的规模是否超过预设阈值;将所述测试代码分解为多个测试代码包,包括:如果所述测试代码的规模超过预设阈值,将所述测试代码分解为多个测试代码包。相应的,所述将各个所述测试代码包以及所述源代码包分别发送给不同的测试执行端,包括:在一台或多台测试服务器中触发启动与所述测试代码包的数量一致的虚拟机和/或虚拟容器,每台所述虚拟机或者所述虚拟容器作为一个测试执行端;将各个所述测试代码包以及所述源代码包分别发送给不同的测试执行端。相应的,所述方法还包括:在所述测试执行端编译并执行接收到的所述测试代码包以生成所述源代码的测试结果之后,触发关闭或销毁所述虚拟机和/或所述虚拟容器。相应的,所述方法还包括:当所述测试代码包的数量小于或等于所述配置值时,在本地编译并执行所述测试代码包以生成所述源代码的测试结果。一种分布式持续集成装置,所述装置包括:获取单元,用于获取源代码和测试代码;第一编译单元,用于编译所述源代码生成源代码包;分解单元,用于将所述测试代码分解为多个测试代码包;发送单元,用于当所述测试代码包的数量大于配置值时,将各个所述测试代码包以及所述源代码包分别发送给不同的测试执行端,以使所述测试执行端编译并执行接收到的所述测试代码包以生成所述源代码的测试结果;接收单元,用于接收所述源代码的测试结果。相应的,所述装置还包括:判断单元,用于判断所述测试代码的规模是否超过预设阈值;所述分解单元具体用于:如果所述测试代码的规模超过预设阈值,将所述测试代码分解为多个测试代码包。相应的,包括:第一触发子单元,用于当所述测试代码包的数量大于配置值时,在一台或多台测试服务器中触发启动与所述测试代码包的数量一致的虚拟机和/或虚拟容器,每台所述虚拟机或者所述虚拟容器作为一个测试执行端;发送子单元,用于将各个所述测试代码包以及所述源代码包分别发送给不同的测试执行端,以使所述测试执行端编译并执行接收到的所述测试代码包以生成所述源代码的测试结果。相应的,所述发送单元还包括:第二触发子单元,用于在所述测试执行端编译并执行接收到的所述测试代码包以生成所述源代码的测试结果之后,触发关闭或销毁所述虚拟机和/或所述虚拟容器。相应的,所述装置还包括:第二编译单元,用于当所述测试代码包的数量小于或等于所述配置值时,在本地编译并执行所述测试代码包以生成所述源代码的测试结果。由此可见,本专利技术实施例具有如下有益效果:本专利技术实施例将测试代码分解为多个测试代码包,当测试代码包的数量大于配置值时,通过分布式的方式将各个测试代码包以及源代码包分发给不同的测试执行端编译并执行测试代码包以生成所述源代码的测试结果,从而降低测试运行时间、快速得到测试结果,实现提高持续集成效率以及资源利用率。附图说明图1为本专利技术实施例中提供的持续集成的流程示意图;图2为本专利技术实施例中提供的分布式持续集成的方法实施例一的流程图;图3为本专利技术实施例中提供的分布式持续集成的方法实施例二的流程图;图4为本专利技术实施例中提供的分布式持续集成的装置实施例的示意图。具体实施方式为使本专利技术的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本专利技术实施例作进一步详细的说明。本专利技术实施例中提供的分布式持续集成方法及装置,是针对现有技术中在持续集成中,在测试规模增长后,运行自动化测试的时间较长的技术问题,提出通过自动化的方式,把数量庞大的测试代码分发到分布式集群中运行,缩短持续集成中运行测试环节执行时间,提高持续集成的效率、快速响应能力以及服务器资源利用率。参见图1所示,首先对在实际应用中持续集成的流程进行说明。在持续集成的过程中,版本库中可以保存有需要被测试的源代码以及测试代码,依赖管理模块中保存有执行测试所必需的一些依赖程序包,从版本库中可以获取到源代码以及测试代码,从依赖管理模块中可以获取到依赖程序包,然后进入构建(Build)环节,构建可以指将源码转换为可执行代码包,在构建中主要是编译源代码,或者编译源代码以及测试代码,自动化测试中如果测试代码未被编译则编译并执行测试代码,或者直接执行已编译的测试代码,在现有技术中测试代码都是作为一个整体编译出来并在一台服务器执行,执行时间会比较长。本专利技术实施例中主要是对持续集成中的构建环节以及自动化测试环节进行改进,详细说明可以参见后续实施例。在完成自动化测试后,可以对代码质量进行分析,在代码质量符合预期要求的情况下进行打包发布,从而完成持续集成的过程。参见图2所示,本专利技术实施例中提供的分布式持续集成的方法实施例一,可以包括以下步骤:步骤201:获取源代码和测试代码。源代码可以指在持续集成过程中需要被测试的源代码,测试代码中可以包括对源代码进行测试的逻辑,测试方式包括但不限于单元测试、集成测试以及端对端测试,单元测试可以指针对函数或者模块的测试,集成测试可以指针对整体产品的某个功能的测试,又可以称为功能测试,端对端测试可以进行从用户界面直达数据库的全链路测试。在实际应用中可以从版本库中获取源代码和测试代码,本领域技术人员可以理解的是,为了实现持续集成还可以根据实际需求获取必要的依赖程序包。步骤202:编译源代码生成源代码包。将源代码编译为可执行的源代码包,即production(产品)包。步骤203:将测试代码分解为多个测试代码包。在本实施例中,为了加快自动化测试的速度,可以将测试代码分解为多个测试代码包。在本专利技术一些可能的实现方式中,在将测试代码分解为多个测试代码包之前还可以包括判断测试代码的规模是否超过预设阈值,则将测试代码分解为多个测试代码包的具体实现可以包括:如果测试代码的规模超过预设阈值,将测试代码分解为多个测试代码包。在本实施例中,可以先扫描测试代码,根据测试代码的规模,当测试代码规模超过预设阈值时,例如测试代码的行数超过预设阈值或者测试代码的大小超过预设阈值,将测试代码分解为本文档来自技高网...

【技术保护点】
1.一种分布式持续集成方法,其特征在于,所述方法包括:获取源代码和测试代码;编译所述源代码生成源代码包;将所述测试代码分解为多个测试代码包;当所述测试代码包的数量大于配置值时,将各个所述测试代码包以及所述源代码包分别发送给不同的测试执行端,以使所述测试执行端编译并执行接收到的所述测试代码包以生成所述源代码的测试结果;接收所述源代码的测试结果。

【技术特征摘要】
1.一种分布式持续集成方法,其特征在于,所述方法包括:获取源代码和测试代码;编译所述源代码生成源代码包;将所述测试代码分解为多个测试代码包;当所述测试代码包的数量大于配置值时,将各个所述测试代码包以及所述源代码包分别发送给不同的测试执行端,以使所述测试执行端编译并执行接收到的所述测试代码包以生成所述源代码的测试结果;接收所述源代码的测试结果。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:判断所述测试代码的规模是否超过预设阈值;将所述测试代码分解为多个测试代码包,包括:如果所述测试代码的规模超过预设阈值,将所述测试代码分解为多个测试代码包。3.根据权利要求1所述的方法,其特征在于,所述将各个所述测试代码包以及所述源代码包分别发送给不同的测试执行端,包括:在一台或多台测试服务器中触发启动与所述测试代码包的数量一致的虚拟机和/或虚拟容器,每台所述虚拟机或者所述虚拟容器作为一个测试执行端;将各个所述测试代码包以及所述源代码包分别发送给不同的测试执行端。4.根据权利要求3所述的方法,其特征在于,所述方法还包括:在所述测试执行端编译并执行接收到的所述测试代码包以生成所述源代码的测试结果之后,触发关闭或销毁所述虚拟机和/或所述虚拟容器。5.根据权利要求1所述的方法,其特征在于,所述方法还包括:当所述测试代码包的数量小于或等于所述配置值时,在本地编译并执行所述测试代码包以生成所述源代码的测试结果。6.一种分布式持续集成装置,其特征在于,所述装置包括:获取单元,用于获取源代码和测试代码;第一编译单元,...

【专利技术属性】
技术研发人员:张秋生
申请(专利权)人:北京国双科技有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1