发明内容
本发明实施例提供一种持续集成方法及装置,主要目的在于通过统一管理持续集成引擎资源以优化持续集成任务的处理,提高软件研发效率。
为达到上述目的,本发明主要提供如下技术方案:
一方面,本发明实施例提供一种持续集成方法,该方法包括:
接收持续集成任务;
根据所述持续集成任务获取持续集成数据和持续集成引擎信息;
利用所述持续集成引擎信息确定集成引擎;
执行所述集成引擎,处理所述持续集成数据得到集成结果。
可选的,接收持续集成任务包括:
检测持续集成数据是否存在数据更新;
若存在,则发送集成指令信息,以便管理***根据所述集成指令信息发送持续集成任务;
接收所述持续集成任务。
可选的,根据所述持续集成任务获取持续集成数据和持续集成引擎信息包括:
解析所述持续集成任务,得到产品类型和任务类型;
根据所述产品类型获取产品的持续集成数据;
根据所述任务类型匹配对应的持续集成引擎信息。
可选的,利用所述持续集成引擎信息确定集成引擎包括:
根据所述持续集成引擎信息查找引擎列表中的可用集成引擎,所述引擎列表是管理***中所有集成引擎的汇总列表;
根据可用集成引擎的负载情况选择一台集成引擎执行所述持续集成任务。
可选的,执行所述集成引擎,处理所述持续集成数据得到集成结果包括:
监测所述集成引擎的执行状态;
若所述集成引擎中断执行,则更换所述集成引擎,重新执行所述持续集成任务,得到集成结果。
可选的,所述方法还包括:
在执行所述集成引擎后,向管理***发送含有集成成功信息或集成失败信息的集成结果。
另一方面,本发明实施例提供一种持续集成装置,该装置包括:
接收单元,用于接收持续集成任务;
获取单元,用于根据所述接收单元接收的持续集成任务获取持续集成数据和持续集成引擎信息;
确定单元,用于利用所述获取单元获取的持续集成引擎信息确定集成引擎;
执行单元,用于执行所述确定单元确定的集成引擎,处理所述持续集成数据得到集成结果。
可选的,所述接收单元包括:
检测模块,用于检测持续集成数据是否存在数据更新;
发送模块,用于当所述检测模块检测存在数据更新时,发送集成指令信息,以便管理***根据所述集成指令信息发送持续集成任务;
接收模块,用于接收所述持续集成任务。
可选的,所述获取单元包括:
解析模块,用于解析所述持续集成任务,得到产品类型和任务类型;
获取模块,用于根据所述解析模块解析得到的产品类型获取产品的持续集成数据;
匹配模块,用于根据所述解析模块解析得到的任务类型匹配对应的持续集成引擎信息。
可选的,所述确定单元包括:
查找模块,用于根据所述持续集成引擎信息查找引擎列表中的可用集成引擎,所述引擎列表是管理***中所有集成引擎的汇总列表;
选择模块,用于根据所述查找模块得到的可用集成引擎的负载情况选择一台集成引擎执行所述持续集成任务。
可选的,所述执行单元包括:
监测模块,用于监测所述集成引擎的执行状态;
更换模块,用于当所述监测模块监测到集成引擎中断执行时,更换所述集成引擎,重新执行所述持续集成任务,得到集成结果。
可选的,所述装置还包括:
发送单元,用于在所述执行单元执行所述集成引擎后,向管理***发送含有集成成功信息或集成失败信息的集成结果。
本发明实施例提供的一种持续集成方法及装置,是将现有分布在各个研发部门中的集成引擎进行资源整合,通过统一的调度与管理最大效率的使用集成引擎,进行研发软件的持续集成。相对于现有的持续集成的方式,本发明实施例获取***中所有的持续集成任务,并根据该持续集成任务采集所需的持续集成数据,以及选择适合的持续集成引擎。以此,能够快速的为继续集成任务匹配到持续集成引擎,并进行处理,避免了由于使用固定引擎处理所存在的等待、故障等弊端,提高了任务处理的效率,同时也均衡了引擎的负载,优化了软件研发的***处理资源。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供了一种持续集成方法,如图1所示,该方法应用于用于软件产品的研发控制管理***,尤其是持续集成***,具体步骤包括:
101、接收持续集成任务。
一款软件的开发,随着研发进度的推进,更多新内容的加入,需要对软件进行不断的持续集成,以及时发现研发过程中存在的错误。在本发明实施例中,所接收的持续集成任务来自于软件研发的各个团队、研发人员,或者是***根据预置的触发条件所自动生成的持续集成任务,如定时的进行持续集成、判断软件研发数据在更改时进行持续集成。在本步骤中,将原本由各研发团队进行的持续集成工作,以持续集成任务的形式由持续集成***统一接收与处理。对于各研发部门或人员来说,自身所提出的持续集成任务在本部门或团队的集成引擎负载过大时,可以由持续集成***分配其他部门闲置的集成引擎进行任务的处理。大大提高了持续集成任务的处理效率。
102、根据持续集成任务获取持续集成数据和持续集成引擎信息。
持续集成***是将现有的分布在各个研发团队或部门的持续集成引擎进行统一的管理,包括确定引擎所能够执行的任务类型,监控引擎的工作状态,即判断是否在工作中以及工作的负载情况等。同时,该***与软件的研发数据***相链接,能过获取当前软件研发的最新数据。通过对持续集成任务的分析,得到能够执行该任务的持续集成引擎信息,并且获取执行该任务的持续集成数据。例如,某个软件研发部门在完成一段软件代码的编译后,需要对该段代码进行持续集成以校验该段代码是否准确。此时,需要将该段代码存储在该软件的研发数据***中,再向持续集成***发送持续集成任务的请求(也可以是在保存代码数据的同时,由研发数据***根据所修改或添加的数据内容向研发数据***发送持续集成任务),由持续集成***根据该任务分析得到能够处理该任务的持续集成引擎信息,以及向研发数据***调取相关的持续集成数据以供集成引擎进行持续集成操作,所需的数据包括需要集成的软件代码段以及与该段代码相关联的数据内容。
103、利用持续集成引擎信息确定集成引擎。
在持续集成***中,由于集成引擎的种类与功能的不同,***将标记出每个集成引擎所能够处理的任务类型,在每种任务类型中,还会标记有不同任务的特征信息,这些特征信息即是102中的持续集成引擎信息。通过分析出每个持续集成任务中的持续集成引擎信息,就可以确定执行该任务的集成引擎。而多数情况下,根据持续集成引擎信息所匹配出的集成引擎不只一个,此时,就需要再设置一些预置的排序策略对所选的集成引擎进行排序,选择出最适合执行该任务的集成引擎。本发明实施例中具体的排序策略不限于集成引擎的工作负载情况,集成引擎的处理速度等因素。
104、执行集成引擎,处理持续集成数据得到集成结果。
在确定了执行持续集成任务的集成引擎后,***将调用并启动该集成引擎,并为该提供必要的处理资源以及所获取的持续集成数据。由集成引擎根据持续集成数据进行集成测试,并将所得到的集成结果保存在***中或是发送至持续集成任务的请求端。
结合上述的实现方式可以看出,本发明实施例所采用的持续集成方法,是将现有分布在各个研发部门中的集成引擎进行资源整合,通过统一的调度与管理最大效率的使用集成引擎,进行研发软件的持续集成。相对于现有的持续集成的方式,本发明实施例获取***中所有的持续集成任务,并根据该持续集成任务采集所需的持续集成数据,以及选择适合的持续集成引擎。以此,能够快速的为继续集成任务匹配到持续集成引擎,并进行处理,避免了由于使用固定引擎处理所存在的等待、故障等弊端,提高了任务处理的效率,同时也均衡了引擎的负载,优化了软件研发的***处理资源。
为了更加详细地说明本发明实施例所提出的持续集成方法,本方实施例还提供了一种持续集成方法,如图2所示,该方法所包括的具体步骤为:
201、接收持续集成任务。
在本发明实施例中,持续集成任务由***根据软件的研发数据是否存在更新进行判断,当研发数据更新时,持续集成***将为更新部分的软件数据生成集成指令信息,以告知管理***该部分的软件数据需要进行持续集成操作。由管理***自动生成持续集成任务并发送给持续集成***。例如,在软件研发过程中,某个部门将一段刚编译完成的代码上传至数据***中并保存下来,此时,持续集成***根据实时监测到的数据***中的内容变化,会将该保存操作以集成指令信息的形式上报给管理***,告知该部门的软件数据有更新且需要进行持续集成,再由管理***根据代码更新的内容与部门确定进行持续更新的软件产品以及进行持续集成的类型,以此来生成持续集成任务发送给持续集成***。
202、根据持续集成任务获取持续集成数据和持续集成引擎信息。
持续集成***在接收到持续集成任务后,需要先对该任务进行解析,获取任务中指定持续集成的产品类型和任务类型。其中,产品类型包括需要进行持续集成的软件产品,该产品中需要进行持续进程的部分信息,即存在代码更新的部分。而任务类型则是对该产品的数据更新部分所进行持续集成的任务类型,例如确定该任务的属性是持续检查、持续编译、持续验证或是持续部署等等不同的类型。
通过解析得到的产品类型可以用于获取该软件产品的持续集成数据,即更新的数据代码。而根据任务类型则可以匹配出适合该持续集成任务的持续集成引擎信息,即适合执行该任务的集成引擎的特征信息。
203、利用持续集成引擎信息确定集成引擎。
在本发明实施例中,***内维护有一个集成引擎列表,在该列表中记录有管理***中所有研发部门或团队所使用的集成引擎,以及各个引擎当前的工作状态。此外,在该列表中还记录有每个引擎所能处理的持续集成任务的类型,即该引擎所具有的特征信息。
当持续集成***根据持续集成任务得到持续集成引擎信息时,根据与集成引擎列表中各个引擎的特征信息相匹配就可以查找出可用于执行该持续集成任务的集成引擎,得到一个可用集成引擎集合。在该集合中存在有多台可用的集成引擎。为了在其中找出最适合与执行该任务的集成引擎,根据集合中各引擎当前的负载情况,选择负载最少的一台为执行该持续集成任务的集成引擎。
进一步的,当所匹配出的引擎集合中的所有引擎都处于满负荷的状态下时,***将暂时不为该持续进程任务分配集成引擎,而是等待有能够处理该任务的引擎时再进行任务的分配。
204、监测集成引擎的执行状态。
确定了集成引擎后,***将启动该引擎执行持续集成任务,并且在执行的过程中实时的检测该引擎的执行状态,判断该引擎是否在正常的进行持续集成任务。直至得出持续集成的结果。
205、更换集成引擎重新执行持续集成任务。
当***检测到集成引擎在执行的过程出现了故障,无法得到持续集成结果时,将在上述的集成引擎集合中再选择一台集成引擎重新加载该持续集成任务,以保证该集成任务能够得到最终的集成结果,提高了任务处理完成的效率。
206、向管理***发送集成结果。
在集成引擎完成持续集成任务,得到集成结果后,会将该结果上报给管理***。其中,集成结果包括持续集成任务的集成成功信息或者是集成失败信息,集成成功说明软件更新的数据在集成后不会与其他已有的程序存在冲突,可以进行继续的研发工作;而集成失败则说明在集成过程中,所更新的软件研发数据不能与已有的数据相匹配,需要进行修改调整。而在集成失败信息中还应包括具体的集成错误的位置信息。以便于研发人员根据该信息进行数据代码的修改。
进一步的,作为对上述方法的实现,本发明实施例提供了一种持续集成装置,该装置设置于软件产品的研发控制管理***的服务器中,并且该服务器主要用于执行持续集成的相关操作,如图3所示,该装置包括:
接收单元31,用于接收持续集成任务;
获取单元32,用于根据所述接收单元31接收的持续集成任务获取持续集成数据和持续集成引擎信息;
确定单元33,用于利用所述获取单元32获取的持续集成引擎信息确定集成引擎;
执行单元34,用于执行所述确定单元33确定的集成引擎,处理所述持续集成数据得到集成结果。
进一步的,如图4所示,所述接收单元31包括:
检测模块311,用于检测持续集成数据是否存在数据更新;
发送模块312,用于当所述检测模块311检测存在数据更新时,发送集成指令信息,以便管理***根据所述集成指令信息发送持续集成任务;
接收模块313,用于接收所述持续集成任务。
进一步的,如图4所示,所述获取单元32包括:
解析模块321,用于解析所述持续集成任务,得到产品类型和任务类型;
获取模块322,用于根据所述解析模块321解析得到的产品类型获取产品的持续集成数据;
匹配模块323,用于根据所述解析模块321解析得到的任务类型匹配对应的持续集成引擎信息。
进一步的,如图4所示,所述确定单元33包括:
查找模块331,用于根据所述持续集成引擎信息查找引擎列表中的可用集成引擎,所述引擎列表是管理***中所有集成引擎的汇总列表;
选择模块332,用于根据所述查找模块331得到的可用集成引擎的负载情况选择一台集成引擎执行所述持续集成任务。
进一步的,如图4所示,所述执行单元34包括:
监测模块341,用于监测所述集成引擎的执行状态;
更换模块342,用于当所述监测模块341监测到集成引擎中断执行时,更换所述集成引擎,重新执行所述持续集成任务,得到集成结果。
进一步的,如图4所示,所述装置还包括:
发送单元35,用于在所述执行单元34执行所述集成引擎后,向管理***发送含有集成成功信息或集成失败信息的集成结果。
综上所述,本发明实施例所采用的一种持续集成方法及装置,是将现有分布在各个研发部门中的集成引擎进行资源整合,通过统一的调度与管理最大效率的使用集成引擎,进行研发软件的持续集成。相对于现有的持续集成的方式,本发明实施例获取***中所有的持续集成任务,并根据该持续集成任务采集所需的持续集成数据,以及选择适合的持续集成引擎。以此,能够快速的为继续集成任务匹配到持续集成引擎,并进行处理,避免了由于使用固定引擎处理所存在的等待、故障等弊端,提高了任务处理的效率,同时也均衡了引擎的负载,优化了软件研发的***处理资源。
需要说明的是,针对上述持续集成装置,凡是本发明实施例中使用到的各个单元模块的功能都可以通过硬件处理器(hardware processor)来实现。
示例性的,如图5所示,图5示出了本发明实施例提供的一种持续集成装置又一实施例的示意图,该持续集成装置设置在软件产品研发控制管理***的服务器中,该服务器可以包括:处理器(processor)51、通信接口(Communications Interface)52、存储器(memory)53和总线54,其中,处理器51、通信接口52、存储器53通过总线54完成相互间的通信。通信接口52可以用于服务器与客户端之间的信息传输。处理器51可以调用存储器53中的逻辑指令,以执行如下方法:获取客户端发出的持续集成请求;根据所述持续集成请求,获取资源数据平台中的展示数据和报告模板,所述资源数据平台用于存储所有产品的产品数据以及相应的报告模板;将所述展示数据添加到所述报告模板中,生成展示报告;向所述客户端发送所述展示报告,以便在所述客户端中进行展示。
此外,上述的存储器53中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。