一种多任务并行构建方法及装置与流程

文档序号:16326771发布日期:2018-12-19 05:58阅读:220来源:国知局
一种多任务并行构建方法及装置与流程

本申请涉及计算机技术领域,具体涉及一种多任务并行构建方法及装置。

背景技术

随着计算机技术的快速发展和日益普及,越来越多的软件产品被开发和使用,一个软件产品通常会涉及很多产品功能,针对不同的产品功能需要编写对应的代码来实现。在运行该软件产品时,需要执行代码所构建的任务,以实现该软件产品的实际功能。

然而,在现有技术中,通常是单任务构建,由于一个软件产品对应多个任务,在执行完成一个软件产品的所有任务时,需要占用大量的人力、时间和资源,导致工作效率较低,使用成本增加。



技术实现要素:

有鉴于此,本申请实施例提供一种多任务并行构建方法及装置,以节省人力、时间和资源,提高工作效率,降低使用成本。

为解决上述问题,本申请实施例提供的技术方案如下:

第一方面,本申请实施例提供了一种多任务并行构建方法,该方法可以包括:

从任务库中获取至少一个任务集合,所述任务集合中至少包括一项任务;不同任务集合所包括的任务属于不同类别;

针对任意一个所述任务集合,判断所述任务集合中任务数量是否大于构建机数量;其中,所述构建机数量不小于1;

若是,将所述任务集合中前n个任务分配给所述构建机;其中,n等于所述构建机数量;所述构建机执行所述任务集合中一项任务;

针对任意一个所述构建机,判断所述构建机是否执行完成所分配的任务;

若是,则将所述任务集合中剩余任务中一项任务分配给所述构建机,返回所述判断所述构建机是否执行完成所分配的任务,直至所述任务集合中全部任务被构建。

可选的,当所述任务集合中任务数量不大于所述构建机数量时,所述将所述任务集合中前n个任务分配给所述构建机具体包括:

将所述任务集合中全部任务分配给前m个所述构建机,其中,m等于所述任务集合中任务数量。

可选的,各个所述任务集合中的任务被所述构建机并行构建。

可选的,所述方法还包括:

获取所述任务库中包括任务数量最多的任务集合;

根据所述任务集合的任务数量配置所述构建机数量;所述构建机与所述任务一一对应。

可选的,所述方法还包括:

将所述构建机的执行结果发送给服务器,以使得所述服务器保存所述执行结果。

第二方面,本申请实施例提供了一种多任务并行构建装置,该装置包括:

第一获取单元,用于从任务库中获取至少一个任务集合,所述任务集合中至少包括一项任务;不同任务集合所包括的任务属于不同类别;

第一判断单元,用于针对任意一个所述任务集合,判断所述任务集合中任务数量是否大于构建机数量;其中,所述构建机数量不小于1;

第一分配单元,用于当所述第一判断单元的判断结果为所述任务集合中的任务数量大于所述构建机数量时,将所述任务集合中前n个任务分配给所述构建机;其中,n等于所述构建机数量;所述构建机执行所述任务集合中一项任务;

第二判断单元,用于针对任意一个所述构建机,判断所述构建机是否执行完成所分配的任务;

第二分配单元,用于当第二判断单元的判断结果为所述构建机执行完成所分配的任务时,则将所述任务集合中其余任务中的一项任务分配给所述构建机,返回所述第二判断单元执行判断所述构建机是否执行完成所分配的任务,直至所述任务集合中全部任务被构建。

可选的,当所述第一判断单元的判断结果为所述任务集合中任务数量不大于所述构建机数量时,所述第一分配单元,具体用于将所述任务集合中全部任务分配给前m个所述构建机,其中,m等于所述任务集合中任务数量。

可选的,所述各个所述任务集合中的任务被所述构建机并行构建。

可选的,所述装置还包括:

第二获取单元,用于获取所述任务库中包括任务数量最多的任务集合;

配置单元,用于根据所述任务集合的任务数量配置所述构建机数量;所述构建机与所述任务一一对应。

可选的,所述装置还包括:

发送单元,用于将所述构建机的执行结果发送给服务器,以使得所述服务器保存所述执行结果。

由此可见,本申请实施例具有如下有益效果:

本申请实施例首先获取任务库中所包括的任务集合,该任务集合中包括至少一个任务,每个任务集合中的任务属于同一类别,不同任务集合中的任务属于不同类别,对于获取的每个任务集合,均需判断该任务集合所包括的任务数量是否大于构建机的数量,如果大于,针对每个任务集合,将任务集合中的前m个任务分配给构建机,其中,m等于构建机的数量,以使得构建机可以并行执行一个任务集合中的多个任务,然后判断每个构建机是否执行完成所分配的任务,如果是,则将任务集合中其余任务分配给已经执行完任务的构建机,从而使得任务集合中的所有任务均被执行。由此,本申请实施例提供的方法可以对多个任务集合同时进行上述操作,使得多个任务集合中的任务被同时执行,也就是说,一个构建机可以并行执行不同任务集合中的任务,从而节省时间和资源,提高工作效率,降低成本。

附图说明

图1为本申请实施例提供的一种多任务并行构建方法的流程图;

图2为本申请实施例提供的一种多任务并行构建框架图;

图3为本申请实施例提供的一种多任务并行构建装置的结构图。

具体实施方式

为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请实施例作进一步详细的说明。

为便于理解本申请的技术方案,下面先对本申请技术方案的背景技术进行说明。

基于背景技术所提出的问题,发明人经过研究发现,由于构建机不可以同时执行同一类别的多个任务,但可以执行不同类别的多个任务,基于此,将同一类别的任务归属于同一任务集合,获取任务库中所保存的不同的任务集合,然后,判断每个任务集合所包括的任务数量是否大于构建机数量,如果大于,则按顺序将该任务集合中的任务分别分配给每个构建机,以使得多个构建机可以并行执行某一任务集合中的多个任务,同时,针对任务库中的各个任务集合,均按照上述操作进行任务分配,以使得同一构建机可以并行执行不同任务集合中的任务,节省时间和资源,提高工作效率。

为便于理解本申请的技术方案,下面将结合附图对本申请实施例提供的多任务并行执行方法进行说明。

参见图1,该图为本申请实施例提供的一种多任务并行构建方法流程图,如图1所示,该方法可以包括:

s101:从任务库中获取至少一个任务集合,任务集合中至少包括一项任务。

本实施例中,获取任务库中所存储的任务集合,并触发任务的构建。其中不同任务集合中所包括的任务属于不同类别,也就是说,同一任务集合中包括同一类别的任务,不同类别的任务属于不同任务集合。

在具体实现时,可以通过创建jenkins任务,然后由jenkins任务通过shell脚本从git库中获取多个任务脚本,并触发构建任务。

s102:针对任意一个任务集合,判断任务集合中任务数量是否大于构建机数量;若是,执行s103。

s103:将任务集合中前n个任务分配给构建机;其中,n等于构建机数量;构建机执行任务集合中一个任务。

本实施例中,针对获取的每个任务集合,判断该任务集合中所包括的任务数量与构建机数量的大小关系,如果该任务集合中任务数量大于构建机数量时,执行s103,按照构建机的数量从该任务集合中提取任务进行构建,为每个构建机分配任务,其中,构建机数量不小于1。

例如,当任务集合1中所包括5个任务时,构建机数量为3,则将任务集合1中前3个任务分别分配给3个构建机,使得3个构建机并行执行任务集合1中的3个任务。

在本申请实施例一种可能的实现方式中,当任务集合中任务数量不大于构建机数量时,将任务集合中全部任务分配给前m个构建机,其中,m等于任务集合中任务数量。

可以理解的是,当任务集合中任务数量小于或等于构建机数量时,则对任务结合中全部任务进行分配,使得每个构建机可以执行该任务集合中的一个任务。例如,当任务集合1包括5个任务时,共有6个构建机,则将任务集合1中5个任务分配给前5个构建机。在具体实现时,可以为每个构建机配置唯一的id号,然后按照id号为每个构建机分配任务。

在本申请实施例一种可能的实现方式中,提供了一种配置构建机数量的方法,具体包括:获取所述任务库中包括任务数量最多的任务集合;根据所述任务集合的任务数量配置所述构建机数量;所述构建机与所述任务一一对应。

本实施例中,获取任务库中包括任务数量最多的任务集合,根据该任务集合中的任务数量配置构建机,使得每个构建机对应一个任务,从而使得每个任务集合中的任务均可以被分配并进行并行构建,提高工作效率。

在实际应用中,当任务库中包括多个任务集合时,对于每个任务集合均进行上述判断和分配,使得各个任务集合中的任务被构建机并行构建。

例如,当任务库中包括3个任务集合,构建机数量为5个,任务集合1中包括3个任务,任务集合2中包括5个任务,任务集合3中包括6个任务,则将任务集合1中的3个任务分配给前3个构建机进行构建,任务集合2中的5个任务分配给每个构建机,任务集合3中的前5个任务分配给所有构建机。对于任务集合3中未被构建的任务,还需要进一步执行s104,判断已分配任务的构建机是否完成当前所分配的同类任务。

s104:针对任意一个构建机,判断构建机是否执行完成所分配的任务;若是,执行s105。

s105:则将任务集合中其余任务中一项任务分配给构建机,返回判断所述构建机是否执行完成所分配的任务,直至任务集合中全部任务被执行。

本实施例中,当任务集合中所包括的任务未被全部构建时,判断当前已分配任务的构建机是否执行完成所分配的任务,如果已完成,则将已完成的任务所属任务集合中的其余任务分配该构建机。在具体实现时,获取任务集合中尚未被构建的一项任务,通过ps、grep命令对构建机正在执行的任务进行判断,判断所获取的任务与构建机正在执行的任务是否属于同一类别,如果是,则对下一个构建机进行相同判断,直至尚未被构建的任务可以被构建。如果不属于同一类别,表明该构建机可以对获取的任务进行构建,则将该任务分配给该构建机进行构建,循环执行上述操作,直至每个任务集合中的全部任务被构建。

可以理解的是,由于每个构建机不能执行同一任务集合中的多个任务,因此,当构建机完成某任务集合中的一项任务时,才可以将该任务集合中的其余任务中的一项任务分配该构建机继续进行任务构建。

例如,构建机1分配有任务集合1中的任务1、任务集合2中的任务1,任务集合3的任务1,由于任务集合1和任务集合2中的任务均被分配,仅任务集合3中剩余任务尚未被分配,当构建机1完成任务集合1中的任务1,任务集合3中的任务1未被完成,则不能为构建机分配任务集合3中的剩余任务,当且仅当构建1中任务集合3中的任务1被执行完成后,才可以将任务集合3中的其余任务中的一项任务分配给构建机1。

在一种可能的实现方式中,当构建机执行完成任务集合中的任务时,可以把执行结果发送给服务器,以使得服务器保存执行结果,当用户需要查看执行结果时,可以从服务器中下载,提高用户使用体验。

由上述实施例可知,本申请实施例首先获取任务库中所包括的任务集合,该任务集合中包括至少一个任务,每个任务集合中的任务属于同一类别,不同任务集合中的任务属于不同类别,对于获取的每个任务集合,均需判断该任务集合所包括的任务数量是否大于构建机的数量,如果大于,针对每个任务集合,将任务集合中的前m个任务分配给构建机,其中,m等于构建机的数量,以使得构建机可以并行执行一个任务集合中的多个任务,然后判断每个构建机是否执行完成所分配的任务,如果是,则将任务集合中其余任务分配给已经执行完任务的构建机,从而使得任务集合中的所有任务均被执行。由此,本申请实施例提供的方法可以对多个任务集合同时进行上述操作,使得多个任务集合中的任务被同时执行,也就是说,一个构建机可以并行执行不同任务集合中的任务,从而节省时间和资源,提高工作效率,降低成本。

参见图2,该图为本申请实施例提供的一种多任务并行构建方法框图,如图2所示,创建jenkins任务,并从git库中获取多个任务集合,每个构建机构建不同任务集合中的一项任务,从而使得一个构建机可以同时并行构建多个任务,在具体实现时,可以按照任务集合中的任务顺序,依次将任务分配给不同的构建机,例如,分别将任务集合1、任务集合2以及任务集合3中前三个任务分配给三个构建机,使得三个构建机并行构建不同任务,提高工作效率。

基于上述方法实施例,本申请提供了一种多任务并行构建的装置,下面将结合附图对该装置进行说明。

参见图3,该图为本申请实施例提供的一种多任务并行构建的装置结构图,如图3所示,该装置包括:

第一获取单元301,用于从任务库中获取至少一个任务集合,所述任务集合中至少包括一项任务;不同任务集合所包括的任务属于不同类别;

第一判断单元302,用于针对任意一个所述任务集合,判断所述任务集合中任务数量是否大于构建机数量;其中,所述构建机数量不小于1;

第一分配单元303,用于当所述第一判断单元的判断结果为所述任务集合中的任务数量大于所述构建机数量时,将所述任务集合中前n个任务分配给所述构建机;其中,n等于所述构建机数量;所述构建机执行所述任务集合中一项任务;

第二判断单元304,用于针对任意一个构建机,判断所述构建机是否执行完成所分配的任务;

第二分配单元305,用于当第二判断单元的判断结果为所述构建机执行完成所分配的任务时,则将所述任务集合中其余任务中的一项任务分配给所述构建机,返回所述第二判断单元执行判断所述构建机是否执行完成所分配的任务,直至所述任务集合中全部任务被构建。

可选的,当所述第一判断单元的判断结果为所述任务集合中任务数量不大于所述构建机数量时,所述第一分配单元,具体用于将所述任务集合中全部任务分配给前m个所述构建机,其中,m等于所述任务集合中任务数量。

可选的,所述各个所述任务集合中的任务被所述构建机并行构建。

可选的,所述装置还包括:

第二获取单元,用于获取所述任务库中包括任务数量最多的任务集合;

配置单元,用于根据所述任务集合的任务数量配置所述构建机数量;所述构建机与所述任务一一对应。

可选的,所述装置还包括:

发送单元,用于将所述构建机的执行结果发送给服务器,以使得所述服务器保存所述执行结果。

需要说明的是,本实施例中各个模块或单元的具体实现可以参见图1所述方法的实现,在此不再赘述。

由上述实施例可知,本申请实施例首先获取任务库中所包括的任务集合,该任务集合中包括至少一个任务,每个任务集合中的任务属于同一类别,不同任务集合中的任务属于不同类别,对于获取的每个任务集合,均需判断该任务集合所包括的任务数量是否大于构建机的数量,如果大于,针对每个任务集合,将任务集合中的前m个任务分配给构建机,其中,m等于构建机的数量,以使得构建机可以并行执行一个任务集合中的多个任务,然后判断每个构建机是否执行完成所分配的任务,如果是,则将任务集合中其余任务分配给已经执行完任务的构建机,从而使得任务集合中的所有任务均被执行。由此,本申请实施例提供的方法可以对多个任务集合同时进行上述操作,使得多个任务集合中的任务被同时执行,也就是说,一个构建机可以并行执行不同任务集合中的任务,从而节省时间和资源,提高工作效率,降低成本。

需要说明的是,本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统或装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“a和/或b”可以表示:只存在a,只存在b以及同时存在a和b三种情况,其中a,b可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。

还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1