软件持续集成的方法、装置和系统制造方法及图纸

技术编号:4103223 阅读:181 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种软件持续集成的方法,包括:接收并管理CI主控发送的CI子任务;根据当前管理的CI代理资源池中至少两个CI代理的在线通信状态、所述至少两个CI代理的计算资源闲置状态,确定执行当前管理的至少一个CI子任务中的当前可执行子任务的目的CI代理,并将所述当前可执行子任务发送至所述目的CI代理,使所述目的CI代理执行所述可执行子任务,所述至少两个CI代理为通用计算单元。本发明专利技术还公开了一种软件持续集成的装置,包括:可执行子任务接收模块;目的CI代理确定模块;本发明专利技术通过向为通用计算单元的目的CI代理发送可执行子任务,增加了执行CI子任务的CI代理的可选性。该系统各装置之间的通信采用动态注册机制,实现了CI主控机和CI代理的动态热插拔和水平扩展,从而有效地提高了系统的扩展性。

【技术实现步骤摘要】

本专利技术涉及持续集成
,特别涉及一种软件持续集成的方法、装置和系统
技术介绍
CI (Continuous Integration,持续集成)是一种自动化的软件创建与测试过程, 在软件开发项目中,CI系统将每个CI任务分解成多个CI子任务,如将对某软件的CI任务 分解成获取最新代码、编译代码、打包、发布、安装、自动测试、质量检测和数据度量等CI子 任务,通过不断的执行CI子任务,可尽早地发现软件缺陷,并对其进行修复。由此可见,不 同的CI系统的优劣可对于软件的开发效率和投入成本造成不同的影响。现有的CI系统如图1所示,主要由CI主控和CI代理组成,其对软件进行CI的主 要步骤为首先,用户向某一CI主控下发CI任务;然后,该CI主控将该CI任务分解成多个 CI子任务,并将该CI子任务下发至相应的CI代理执行,其中每个CI代理负责执行的CI任 务类型是固定的;最后,由该相应的CI代理执行该CI子任务,并将执行结果返回CI主控。在实现本专利技术的过程中,专利技术人发现现有技术至少存在以下问题现有的持续集成系统中,由于CI代理负责执行的CI任务类型是固定的,CI主控 只能下发固定的CI任务至相应的CI代理,没有选择的可能性,从而CI代理资源的共享程 度低,资源利用率低下。
技术实现思路
本专利技术实施例提供了一种软件持续集成的方法,以实现CI代理间的负载分担,提 高CI代理的利用率。—方面,本专利技术实施例提供一种软件持续集成的方法,包括接收并管理CI主控发送的CI子任务;根据当前管理的CI代理资源池中至少两个CI代理的在线通信状态、所述至少两 个CI代理的计算资源闲置状态,确定执行当前管理的至少一个CI子任务中的当前可执行 子任务的目的CI代理,并将所述当前可执行子任务发送至所述目的CI代理,使所述目的CI 代理执行所述可执行子任务,所述至少两个CI代理为通用计算单元。本专利技术实施例还提供了一种软件持续集成的装置,所述装置包括可执行子任务接收模块,用于接收并管理CI主控发送的CI子任务 ;目的CI代理确定模块,用于根据当前管理的CI代理资源池中至少两个CI代理的 在线通信状态、所述至少两个CI代理的计算资源闲置状态,确定执行当前管理的至少一个 CI子任务中的当前可执行子任务的目的CI代理,并将所述当前可执行子任务发送至所述 目的CI代理,使所述目的CI代理执行所述可执行子任务,所述至少两个CI代理为通用计 算单元。本专利技术实施例还提供了一种软件持续集成的系统,包括至少两个CI主控、CI管 理机、至少两个CI代理,所述至少两个CI代理为通用计算单元;所述CI主控用于接收用户下发的CI任务,将所述CI任务分解成至少两项CI子任务,向所述CI管理机发送当前可执行的CI子任务;所述CI管理机用于接收并管理所述CI主控发送的CI子任务;根据当前管理的CI 代理资源池中至少两个CI代理的在线通信状态、所述至少两个CI代理的计算资源闲置状 态,确定执行自身管理的至少一个CI子任务中的当前可执行子任务的目的CI代理,并将所 述当前可执行子任务发送至所述目的CI代理;所述CI代理为所述CI管理机确定的目的CI代理时,用于接收并执行所述CI管 理机发送的当前可执行子任务。可见,本实施例通过根据当前管理的CI代理资源池中至少两个CI代理的在线通 信状态、所述至少两个CI代理的计算资源闲置状态,确定执行所述可执行子任务的目的CI 代理,实现CI代理间的负载分担,提高CI代理的利用率以及持续集成的效率。附图说明图1是现有技术中CI系统的结构示意图;图2是本专利技术实施例1中提供的软件持续集成的方法流程图;图3是本专利技术实施例2中提供的软件持续集成的方法流程图;图4是本专利技术实施例3中提供的软件持续集成的方法流程图;图5是本专利技术实施例4中提供的第一种CI管理机的结构示意流程图;图6是本专利技术实施例4中提供的第二种CI管理机的结构示意流程图;图7是本专利技术实施例4中提供的第三种CI管理机的结构示意流程图;图8是本专利技术实施例5中提供的软件持续集成系统的结构示意流程图。具体实施例方式为使本专利技术的目的、技术方案和优点更加清楚,下面将结合附图对本专利技术实施方 式作进一步地详细描述。实施例1如图2所示,本专利技术实施例提供了一种软件持续集成的方法,该方法包括以下步 骤SlOl 接收CI主控发送的CI子任务;S102 根据当前管理的CI代理资源池中至少两个CI代理的在线通信状态、所述至 少两个CI代理的计算资源闲置状态,确定执行当前管理的至少一个CI子任务中的当前可 执行子任务的目的CI代理,并将所述当前可执行子任务发送至所述目的CI代理,使所述目 的CI代理执行所述可执行子任务,所述至少两个CI代理为通用计算单元。本实施例中,当前管理的至少一个CI子任务中的当前可执行子任务,可以是当前 接收的所述CI子任务,也可以是之前接收的CI子任务。可见,本实施例通过根据当前管理的CI代理资源池中至少两个CI代理的在线通 信状态、所述至少两个CI代理的计算资源闲置状态,确定执行所述可执行子任务的目的CI 代理,实现CI代理间的负载分担,提高CI代理的利用率以及持续集成的效率;通过CI管理 机接收并管理一个或多个CI主控发送的CI子任务,并由CI管理机将自身当前管理的至少一个CI子任务中的当前可执行子任务发送给CI代理处理,进而支持CI主控间的并发任务 控制。实施例2如图3所示,本专利技术实施例提供了一种软件持续集成的方法,该方法包括以下步 骤 S201 =CI管理机接收CI主控和CI代理发送的注册请求;具体的,CI主控和CI代理启动时,以心跳的形式发送向CI管理机注册请求,与CI 管理机建立通讯连接,CI管理机中将产生一个由所有向其注册的CI代理组成的CI代理资 源池,资源池中的CI代理为通用的计算单元。其中,CI主控发送的注册请求的请求信息中包括CI主控间的子任务依赖关系和 其指定的CI代理类型,不同类型的CI代理可以支持不同操作系统和特殊CI任务。S202 =CI管理机接收CI主控和CI代理发送的注册请求,根据至少两个CI主控发 送的注册请求,获取至少两个CI主控间的子任务依赖关系和至少两个CI主控指定的CI代 理类型;根据至少两个CI代理发送的注册请求,获取所述CI代理的类型,将至少两个CI代 理按其类型组织成不同的CI代理资源组。具体的,CI管理机根据至少两个CI主控发送的注册请求,获取至少两个CI主控 间的子任务依赖关系和至少两个CI主控指定的CI代理类型,生成子任务依赖关系表和在 线CI代理类型表;CI管理机根据至少两个CI代理发送的注册请求,获取所述CI代理的类 型,将至少两个CI代理按其类型组织成不同的CI代理资源组,将CI代理类型相同的CI代 理划分在同一个CI代理资源组中。S203 用户发送CI任务到CI主控;具体的,用户可以通过Web(网络)或⑶I (Graphical User Interface,图形用户 接口)发送CI任务到CI主控;例如,用户需要更新其正在开发的Sl软件,即把对Sl新开发产生的内容与当前的 Sl软件的内容集成起来,则其可通过Web将向CI主控发送对软件Sl的CI任务。S204 =CI主控将接收到的CI任务分解为多个CI子任务,并将该多本文档来自技高网...

【技术保护点】
一种软件持续集成的方法,其特征在于,所述方法包括:接收并管理CI主控发送的CI子任务;根据当前管理的CI代理资源池中至少两个CI代理的在线通信状态、所述至少两个CI代理的计算资源闲置状态,确定执行当前管理的至少一个CI子任务中的当前可执行子任务的目的CI代理,并将所述当前可执行子任务发送至所述目的CI代理,使所述目的CI代理执行所述可执行子任务,所述至少两个CI代理为通用计算单元。

【技术特征摘要】
一种软件持续集成的方法,其特征在于,所述方法包括接收并管理CI主控发送的CI子任务;根据当前管理的CI代理资源池中至少两个CI代理的在线通信状态、所述至少两个CI代理的计算资源闲置状态,确定执行当前管理的至少一个CI子任务中的当前可执行子任务的目的CI代理,并将所述当前可执行子任务发送至所述目的CI代理,使所述目的CI代理执行所述可执行子任务,所述至少两个CI代理为通用计算单元。2.根据权利要求1所述方法,其特征在于,所述根据当前管理的CI代理资源池中至少 两个CI代理的在线通信状态、所述至少两个CI代理的计算资源闲置状态,确定执行所述可 执行子任务的目的CI代理,包括在当前管理的CI代理资源池中的至少两个CI代理均处于在线通信状态时,根据所述 至少两个CI代理返回的空闲状态查询响应,获取至少两个CI代理的计算资源闲置状态;根据所述至少两个CI代理的计算资源闲置状态生成所述至少两个CI代理的空闲计算 资源权值,如果当前CI代理的空闲计算资源权值大于或等于所述可执行子任务的子任务 权值,则所述当前CI代理为目的CI代理。3.根据权利要求2所述方法,其特征在于,所述方法还包括 接收所述CI主控发送的所述空闲计算资源权值的获取请求;响应所述获取请求,将所述空闲计算资源权值发送给所述CI主控,使所述CI主控将其 当前可执行的CI子任务发送给根据所述空闲计算资源权值确定的目的CI代理执行。4.根据权利要求1所述方法,其特征在于,所述接收CI主控发送的可执行子任务之前, 所述方法还包括接收CI主控和CI代理发送的注册请求;根据至少两个CI主控发送的注册请求,获取所述至少两个CI主控间的子任务依赖关 系和所述至少两个CI主控指定的CI代理类型;根据至少两个CI代理发送的注册请求,获取所述至少两个CI代理的类型,将所述至少 两个CI代理按其类型组织成不同的CI代理资源组。5.根据权利要求4所述方法,其特征在于,所述根据当前管理的CI代理资源池中至少 两个CI代理的在线通信状态、所述至少两个CI代理的计算资源闲置状态,确定执行当前管 理的至少一个CI子任务中的当前可执行子任务的目的CI代理,并将所述可执行子任务发 送至所述目的CI代理,使所述目的CI代理执行所述可执行子任务,所述CI代理为通用计 算单元之后,所述方法还包括接收所述目的CI代理发送的所述可执行子任务的执行结果; 根据所述至少两个CI主控间的子任务依赖关系,判断是否有其他CI主控的子任务的 执行依赖所述执行结果,如果有,则记录所述执行结果;响应所述其他CI主控发送的获取所述执行结果的请求,使所述其他CI主控根据所述 执行结果确定并发送当前可执行的CI子任务。6.根据权利要求4所述方法,其特征在于,所述接收CI主控发送的可执行子任务之后, 所述方法还包括;根据所述CI主控指定的CI代理类型,确定目的CI代理资源组; 所述根据当前管理的CI代理资源池中至少两个CI代理的在线通信状态、所述至少两个CI代理的计算资源闲置状态,确定执行所述可执行子任务的目的CI代理,包括在所述目的CI代理资源组中,根据所述目的CI代理资源组中的CI代理的在线通信状 态、所述CI代理的计算资源闲置状态,确定执行所述可执行子任务的目的CI代理。7.根据权利要求1所述方法,其特征在于,所述方法还包括向CI主控和CI代理发送心跳握手消息,以检测所述CI主控和所述CI代理的通信状 态;当检测到所述目的CI代理通信状态异常,将所述目的CI代理未完成的可执行子任务重 新发送给待执行所述可执行子任务的目的CI代理。8.一种CI管理机,其特征在于,所述CI管理机包括可执行子任务接收模块,用于接收并管理CI主控发送的CI子任务; 目的CI代理确定模块,用于根据当前管理的CI代理资源池中至少两个CI代理的在线 通信状态、所述至少两个CI代理的计算资源闲置状态,确定执行当前管理的至少一个CI子 任务中的当前可执行子任务的目的CI代理,并将所述可执行子任务发送至所述目的CI代 理,使所述目的CI代理执行所述可执行子任务,所述至少两个CI代理为通用计算单元。9.根据权利要求8所述CI管理机,其特征在于,所述目的CI代理确定模块包括 计算...

【专利技术属性】
技术研发人员:王佥孙达
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:94[中国|深圳]

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

1