一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

持续集成环境的流水线优化方法与装置与流程

2022-02-21 03:42:33 来源:中国专利 TAG:


1.本技术涉及计算机技术领域,具体涉及一种持续集成环境的流水线优化方法与装置。


背景技术:

2.仓库管理系统持续集成(gitlab continuous integration,gitlab ci)是gitlab提供的持续集成服务,通过将代码集成到主干以保障合并主线之后不会出现质量问题。
3.在gitlab ci中,每个推送到gitlab服务器的配置文件中的代码都会构建一个持续集成环境的流水线(pipeline),从而对代码进行自动构建、单元测试和代码检测等流程以实现自动化测试。然而,在测试量较大和测试需求较复杂的情况下,流水线的构建时间将成为阻碍开发人员快速迭代的瓶颈,需要进一步解决。


技术实现要素:

4.本技术实施例提供了一种持续集成环境的流水线优化方法与装置,以期望实现对流水线的构建时间进行优化,减小流水线的构建时间。
5.第一方面,本技术实施例提供一种持续集成环境的流水线优化方法,包括:
6.在仓库管理系统中创建项目,并获取为所述项目配置的至少一个运行器以及所述至少一个运行器中的每个运行器所支持的并行运行的作业数量,所述至少一个运行器用于运行所述项目的作业并将运行结果返回所述仓库管理系统;
7.在所述项目的根目录中创建第一配置文件,并推送所述第一配置文件到所述仓库管理系统以构建持续集成环境的流水线;
8.根据所述至少一个运行器所包含的运行器数量和所述至少一个运行器中的每个运行器所支持的并行运行的作业数量确定针对所述流水线的构建时间的优化策略,并执行所述优化策略。
9.第二方面,本技术实施例提供一种持续集成环境的流水线优化装置,所述装置包括处理单元,所述处理单元用于:
10.在仓库管理系统中创建项目,并获取为所述项目配置的至少一个运行器及所述至少一个运行器中的每个运行器所支持的并行运行的作业数量,所述至少一个运行器用于运行所述项目的作业并将运行结果返回所述仓库管理系统;
11.在所述项目的根目录中创建第一配置文件,并推送所述第一配置文件到所述仓库管理系统以构建持续集成环境的流水线;
12.根据所述至少一个运行器所包含的运行器数量和所述至少一个运行器中的每个运行器所支持的并行运行的作业数量确定针对所述流水线的构建时间的优化策略,并执行所述优化策略。
13.第三方面,本技术实施例提供一种电子设备,所述电子设备包括处理器、存储器和通信接口,所述存储器存储有一个或多个程序,并且所述一个或多个程序由所述处理器执
行,所述一个或多个程序用于执行本技术实施例第一方面中的步骤的指令。
14.第四方面,本技术实施例提供一种计算机可读存储介质,其中,所述计算机可读存储介质存储用于电子数据交换的计算机程序,所述计算机程序可操作来使得计算机执行本技术实施例第一方面中所描述的部分或全部步骤。
15.第五方面,本技术实施例提供一种计算机程序产品,其中,所述计算机程序产品包括计算机程序,所述计算机程序可操作来使得计算机执行本技术实施例第一方面中所描述的部分或全部步骤,所述计算机程序产品可以为一个软件安装包。
16.可以看出,在本技术实施例中,首先,通过获取对仓库管理系统中创建的项目配置的至少一个运行器以及该至少一个运行器中的每个运行器所支持的并行运行的作业数量;然后,为该项目创建第一配置文件,并推送该第一配置文件到仓库管理系统以构建流水线;最后,根据该至少一个运行器所包含的运行器数量和该至少一个运行器中的每个运行器所支持的并行运行的作业数量确定针对流水线的构建时间的优化策略。由于本技术实施例根据配置的运行器数量和运行器所支持的并行运行的作业数量来确定针对流水线的构建时间的优化策略,并执行所述优化策略,以实现对流水线的构建时间进行优化,从而减小流水线的构建时间。
附图说明
17.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。显而易见地,下面描述的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
18.图1是本技术实施例提供的一种通信系统的架构示意图;
19.图2是本技术实施例提供的一种持续集成环境的流水线优化方法的流程示意图;
20.图3是本技术实施例提供的一种流水线的结构示意图;
21.图4是本技术实施例提供的一种优化流水线后的结构示意图;
22.图5是本技术实施例提供的又一种优化流水线后的结构示意图;
23.图6是本技术实施例提供的又一种优化流水线后的结构示意图;
24.图7是本技术实施例提供的又一种优化流水线后的结构示意图;
25.图8是本技术实施例提供的又一种优化流水线后的结构示意图;
26.图9是本技术实施例提供的又一种优化流水线后的结构示意图;
27.图10是本技术实施例提供的又一种优化流水线后的结构示意图;
28.图11是本技术实施例提供的又一种优化流水线后的结构示意图;
29.图12是本技术实施例提供的一种持续集成环境的流水线优化装置的功能单元组成框图。
具体实施方式
30.下面结合附图,对本技术实施例中的技术方案进行详细介绍。
31.为了更好地理解本技术实施例的方案,先对本技术实施例可能涉及的通信系统进行介绍,如图1所示。其中,通信系统100可以包括电子设备110、仓库管理系统服务器120和
运行器服务器130。用户可以在电子设备110上运行的仓库管理系统中创建项目,并在该项目的根目录中创建配置文件;仓库管理系统服务器120可以为仓库管理系统中创建的项目配置1个或者多个运行器,在项目下的配置文件中找到指定的运行器以及根据配置文件构建一次流水线;运行器服务器130可以用于加载为项目配置的运行器,而加载的运行器可以用于运行项目的作业并将运行结果返回仓库管理系统服务器120。需要说明的是,运行器服务器130上可以加载1个或者多个运行器,或者运行器服务器130可以为1个或者多个运行器服务器的集合。
32.具体的,本技术实施例中的电子设备110可以为各种具有持续集成环境的流水线优化功能的手持设备、车载设备、可穿戴设备、用户设备(user equipment,ue)、终端设备(terminal device)、个人数字助理(personal digital assistant,pda)、个人计算机(personal computer,pc)、中继设备、支持802.11协议的计算机、支持5g系统中的终端设备以及未来演进的公用陆地移动通信网络(public land mobile network,plmn)中的终端设备等,本技术实施例不作具体限制。
33.具体的,本技术实施例中的仓库管理系统服务器120可以为各种用于提供仓库管理服务功能的云服务器、物联网设备、数据中心网络设备、用户设备、终端设备、个人计算机、中继设备、支持802.11协议的计算机、支持5g系统中的网络设备以及未来演进的plmn中的网络设备等,本技术实施例不作具体限制。
34.具体的,本技术实施例中的运行器服务器130可以为各种用于加载运行器的云服务器、物联网设备、数据中心网络设备、用户设备、终端设备、个人计算机、中继设备、支持802.11协议的计算机、支持5g系统中的网络设备以及未来演进的plmn中的网络设备等,本技术实施例不作具体限制。
35.下面将从方法示例的角度介绍持续集成环境的流水线优化的执行步骤,请参阅图2。图2是本技术实施例提供的一种持续集成环境的流水线优化方法的流程示意图,该方法可以应用于电子设备110;该方法包括:
36.s210、在仓库管理系统中创建项目,并获取为该项目配置的至少一个运行器以及该至少一个运行器中的每个运行器所支持的并行运行的作业数量。
37.其中,至少一个运行器可以用于运行该项目的作业并将运行结果返回仓库管理系统(gitlab)。
38.需要说明的是,首先,电子设备110可以接收来自用户的指令,并根据该指令在仓库管理系统中创建一个项目;然后,仓库管理系统服务器120可以为该项目配置一个或多个运行器;最后,仓库管理系统服务器120为该项目配置的运行器可以加载到运行器服务器130中,运行器用于处理该项目中的作业,并将处理的运行结果返回给仓库管理系统服务器120,运行结果再由仓库管理系统服务器120返给电子设备110。此外,仓库管理系统服务器120可以为每次创建的项目配置至少一个运行器,而每个运行器可以同时处理一个或者多个作业,也就是说,每个运行器所支持的并行运行的作业数量可以为一个或者多个。同时,在为项目配置的至少一个运行器中可以存在具有相同类型的多个运行器和具有不同类型的多个运行器。同时,同一类型的每个运行器所支持的并行运行的作业数量是相同的。
39.举例中,某个项目配置有运行器1(gitlab runner1)、运行器2(gitlab runner2)和运行器3(gitlab runner3)。其中,gitlab runner1和gitlab runner2为同一类型的运行
器,而gitlab runner1和gitlab runner2与gitlab runner3为不同类型的运行器。同时,gitlab runner1和gitlab runner2所支持的并行运行的作业数量是相同的,而gitlab runner1和gitlab runner2与gitlab runner3所支持的并行运行的作业数量可以相同,也不可以不同。
40.s220、在项目的根目录中创建第一配置文件,并推送该第一配置文件到仓库管理系统以构建持续集成环境的流水线。
41.可以理解的是,电子设备110可以接收来自用户的指令,并根据该指令在项目的根目录中创建第一配置文件,并推送到第一配置文件到仓库管理系统服务器120;然后,仓库管理系统服务器120可以根据该第一配置文件中的代码构建一个持续集成环境的流水线。
42.具体的,流水线可以包括多个流程,比如自动构建、自动进行单元检测、自动进行代码检查等流程。请参阅图3,一次流水线中可以包括多个阶段,并且每个阶段可以包括多个作业,也就是说,每个阶段是对多个作业逻辑上的划分。其中,流水线中的所有阶段按照顺序运行,而任意一个阶段的失败将导致该阶段之后的每个阶段不被执行,并且只有所有阶段成功完成后,该流水线才能构建成功。此外,同一个阶段中的所有作业会并行运行,并且只有当前阶段中的所有作业都运行成功,该当前阶段才能构建成功。
43.s230、根据该至少一个运行器所包含的运行器数量和该至少一个运行器中的每个运行器所支持的并行运行的作业数量确定针对该流水线的构建时间的优化策略,并执行该优化策略。
44.需要说明的是,仓库管理系统服务器120为每个项目配置的每个运行器所支持的并行运行的作业数量可以为1个或者多个,并且为每个项目配置的运行器数量可以为1个或者多个,具体根据仓库管理系统中创建的项目需求进行配置,本技术实施例不作具体限制。
45.进一步的,如果同一个阶段下有n个作业是在同一类型的运行器上运行,则该类型的每个运行器所支持的并行运行的作业数量大于或者等于n。
46.举例中,某个项目配置有运行器1(gitlab runner1)和运行器2(gitlab runner2)。其中,gitlab runner1和gitlab runner2为同一类型的runner。如果同一个阶段下有2个作业是在该类型的runner上运行,则gitlab runner1和gitlab runner2所支持的并行运行的作业数量都大于或者等于2。
47.由于基于仓库管理系统的持续集成系统构建的流水线可以实现持续集成自动化测试,而测试量较大和测试需求较复杂的情况,也将增大流水线的构建时间,导致该持续集成系统的运行时长,影响软件开发的快速迭代,因此,本技术实施例考虑通过运行器的数量和运行器所支持的并行运行的作业数量来优化流水线的构建时间,具体描述如下。
48.在一个可能的示例中,根据至少一个运行器所包含的运行器数量和至少一个运行器中的每个运行器所支持的并行运行的作业数量确定针对流水线的构建时间的优化策略,可以包括以下操作:根据至少一个运行器所包含的运行器数量将独立用例集划分为至少一个独立用例子集;其中,独立用例集可以用于表示独立用例组成的逻辑集合,独立用例可以用于表示不可再分割和不以任何用例的输出为前提的执行单元;将至少一个独立用例子集中的每个子集组成为一个第一作业,得到至少一个第一作业;其中,至少一个第一作业中的每个第一作业对应有一个至少一个运行器中的运行器;根据每个运行器所支持的并行运行的作业数量将至少一个第一作业编入流水线中的阶段。
runner2),并且gitlab runner1和gitlab runner2所支持的并行运行的job数量为1。其次,将独立用例集按照gitlab runner1和gitlab runner2划分为独立用例子集1、独立用例子集2、独立用例子集3和独立用例子集4,其中,独立用例子集1和独立用例子集2对应于gitlab runner1,独立用例子集3和独立用例子集4对应于gitlab runner2。接着,将独立用例子集1组成为作业1,将独立用例子集2组成为作业2,将独立用例子集3组成为作业3,以及将独立用例子集4组成为作业4。然后,由于gitlab runner1和gitlab runner2所支持的并行运行的job数量小于gitlab runner1和gitlab runner2对应的作业中的作业数量,因此从gitlab runner1对应的作业1和作业2中选取作业1,以及从gitlab runner2对应的作业3和作业4中选取作业3,并将作业1和作业3同一个阶段,即阶段n。最后,将作业2和作业4编入下一个阶段,即阶段n 1。
63.需要说明的是,本技术实施例中的技术方案并不仅限于图8和图9中的示例,本领域技术人员能够理解的基础上,本技术实施例中的技术方案还可以包括其他示例,不作具体限制。
64.上述介绍了仅存在独立用例集的情况,下面具体介绍仅存在前置用例集和条件用例集的情况。其中,前置用例集可以用于表示前置用例组成的逻辑集合,而条件用例集可以用于表示条件用例组成的逻辑集合。前置用例可以为独立用例或者条件用例,而条件用例可以用于表示依赖于前置用例的输出为前提的执行单元。
65.在一个可能的示例中,根据至少一个运行器所包含的运行器数量和该至少一个运行器中的每个运行器所支持的并行运行的作业数量确定针对流水线的构建时间的优化策略,可以包括以下操作:根据至少一个运行器所包含的运行器数量将前置用例集划分为至少一个前置用例子集,以及将条件用例集划分为至少一个条件用例子集;其中,至少一个条件用例子集中的每个子集与至少一个前置用例子集中的每个子集一一对应;将至少一个前置用例子集中的每个子集组成为一个第二作业以得到至少一个第二作业,以及将至少一个条件用例子集中的每个子集组成为一个第三作业以得到至少一个第三作业;根据每个运行器所支持的并行运行的作业数量将至少一个第二作业和至少一个第三作业编入流水线中的阶段;其中,第一前置用例子集组成的一个第二作业编入的阶段在第一条件用例子集组成的一个第三作业编入的阶段之前,该第一前置用例子集为至少一个前置用例子集中的一个子集,该第一条件用例子集为在至少一个条件用例子集中依赖该第一前置用例子集的输出为前提的一个子集。
66.举例中,首先,某个项目配置有运行器1(gitlab runner1)和运行器2(gitlab runner2),前置用例集属于gitlab runner1,条件用例集属于gitlab runner2,并且gitlab runner1和gitlab runner2支持单个作业或者多个作业并行运行。其次,将前置用例集按照gitlab runner1划分为前置用例子集1和前置用例子集2,以及将条件用例集按照gitlab runner2划分为条件用例子集1和条件用例子集2。其中,前置用例子集1为条件用例子集1所依赖的用例子集,前置用例子集2为条件用例子集2所依赖的用例子集。然后,将前置用例子集1组成为作业1,将前置用例子集2组成为作业2,将条件用例子集1组成为作业3,以及将条件用例子集2组成为作业4,其中,gitlab runner1对应的作业为作业1和作业2,gitlab runner2对应的作业为作业3和作业4。最后,将作业1和作业2编入流水线中的阶段中。
67.可见,本技术实施例在优化流水线中的阶段所包含的作业数的过程中,不仅考虑
了运行器的数量和运行器所支持的并行运行的作业数量对优化的影响,还考虑了前置用例和条件用例的前后关系对优化的影响,从而保证流水线优化过程的效率和准确性。
68.在一个可能的示例中,至少一个前置用例子集中的所有第二作业对应于至少一个运行器中的第一运行器,至少一个条件用例子集中的所有第三作业对应于该至少一个运行器中的第二运行器;其中,第一运行器和第二运行器的关系为以下一种:第一运行器和第二运行器为同一个运行器、第一运行器与第二运行器包含至少一个相同的运行器、第一运行器中的每个运行器与第二运行器中的每个运行器不相同。
69.举例中,第一运行器可以包括gitlab runner1和gitlab runner2,而第二运行器可以包括gitlab runner2和gitlab runner3。此时,第一运行器和第二运行器包含相同的运行器,即gitlab runner2。
70.可以理解的是,前置用例集和条件用例集可以对应于同一个运行器、前置用例集与条件用例集之间有对应于相同的运行器或者前置用例集与条件用例集之间没有对应于相同的运行器。可见,通过考虑前置用例集和条件用例集之间所属的运行器,从而有利于保证流水线优化过程的准确性。
71.下面本技术实施例将具体介绍运行器所支持的并行运行的作业数量与运行器对应的作业中的作业数量之间的大小关系如何影响流水线优化过程。
72.在一个可能的示例中,根据每个运行器所支持的并行运行的作业数量将至少一个第二作业和至少一个第三作业编入流水线中的阶段,可以包括以下操作:
73.在第一运行器中的每个运行器所支持的并行运行的作业数量大于或等于第一运行器中的每个运行器对应的第二作业中的作业数量,以及第二运行器中的每个运行器所支持的并行运行的作业数量大于或等于第二运行器中的每个运行器对应的第三作业中的作业数量的情况下,将至少一个第二作业编入流水线中的第三阶段,以及将至少一个第三作业编入流水线中的第四阶段,第三阶段为第四阶段之前的一个阶段。
74.举例中,请参阅图9,首先,某个项目配置有gitlab runner1、gitlab runner2和gitlab runner3,前置用例集属于gitlab runner1和gitlab runner2,条件用例集属于gitlab runner2和gitlab runner3,并且gitlab runner1、gitlab runner2和gitlab runner3所支持的并行运行的作业数都为2。其次,将前置用例集按照gitlab runner1划分为前置用例子集1,将剩余的前置用例集按照gitlab runner2划分为前置用例子集2,将条件用例集按照gitlab runner2划分为条件用例子集1,以及将剩余的条件用例集按照gitlab runner3划分为条件用例子集2。然后,将前置用例子集1组成为作业1,将前置用例子2组成为作业2,将条件用例子集1组成为作业3,以及将条件用例子集2组成为作业4。其中,gitlab runner1对应的作业为作业1,gitlab runner2对应的作业为作业2和作业3,gitlab runner3对应的作业为作业4。最后,由于gitlab runner1、gitlab runner2和gitlab runner3所支持的并行运行的作业数量大于或等于其各自对应的作业中的作业数量,因此将作业1和作业2编入同一个阶段,即阶段n。此外,由于作业1编入的阶段需要在作业3之前,以及作业2编入的阶段需要在作业4之前,因此将作业3和作业4编入阶段n的下一个阶段,即阶段n 1。
75.可见,通过考虑前置用例集和条件用例集之间所属的运行器,从而有利于保证流水线优化过程的准确性。
76.在一个可能的示例中,根据每个运行器所支持的并行运行的作业数量将至少一个第二作业和至少一个第三作业编入流水线中的阶段,可以包括以下操作:
77.在第一运行器中的每个运行器所支持的并行运行的作业数量大于或等于第一运行器中的每个运行器对应的第二作业中的作业数量,以及第二运行器中的每个运行器所支持的并行运行的作业数量大于或等于第二运行器中的每个运行器对应的第三作业中的作业数量的情况下,从流水线中的第五阶段开始,将至少一个第二作业中的每个第二作业按照阶段的顺序依次编入流水线中的阶段;其中,至少一个第二作业中对应于同一个运行器的作业编入的阶段不相同,至少一个第二作业中对应于不同运行器的作业编入的阶段相同;从流水线中的第六阶段开始,将至少一个第三作业中的每个第三作业按照阶段的顺序依次编入流水线中的阶段,第五阶段为第六阶段之前的一个阶段;其中,至少一个第三作业中对应于同一个运行器的作业编入的阶段不相同,至少一个第三作业中对应于不同运行器的作业编入的阶段相同。
78.举例中,请参阅图10,首先,某个项目配置有gitlab runner1、gitlab runner2和gitlab runner3,前置用例集属于gitlab runner1和gitlab runner2,条件用例集属于gitlab runner2和gitlab runner3,并且gitlab runner1、gitlab runner2和gitlab runner3所支持的并行运行的作业数都为2。其次,将前置用例集按照gitlab runner1划分为前置用例子集1,将剩余的前置用例集按照gitlab runner2划分为前置用例子集2和前置用例子集3,将条件用例集按照gitlab runner2划分为条件用例子集1,以及将剩余的条件用例集按照gitlab runner3划分为条件用例子集2和条件用例子集3。然后,将前置用例子集1组成为作业1,将前置用例子2组成为作业2,将前置用例子3组成为作业3,将条件用例子集1组成为作业4,将条件用例子集2组成为作业5,以及将条件用例子集3组成为作业6。其中,gitlab runner1对应的作业为作业1和作业2,gitlab runner2对应的作业为作业3和作业4,gitlab runner3对应的作业为作业5和作业6。最后,由于gitlab runner1、gitlab runner2和gitlab runner3所支持的并行运行的作业数量大于或等于其各自对应的作业中的作业数量,因此从阶段n开始,将作业1、作业2和作业3按照顺序依次进行编入。其中,作业1和作业2属于gitlab runner1,而作业3属于gitlab runner2,因此将作业2和作业3编入阶段n 1。同理,从阶段n 1开始,作业4和作业5编入同一个阶段,但由于作业5需要编入作业2之后的阶段,因此将作业4和作业5编入阶段n 2,再将作业6编入阶段n 3。
79.可见,通过考虑前置用例集和条件用例集之间所属的运行器,从而有利于保证流水线优化过程的准确性。
80.在一个可能的示例中,根据每个运行器所支持的并行运行的作业数量将至少一个第二作业和至少一个第三作业编入流水线中的阶段,可以包括以下操作:在第一运行器中的每个运行器所支持的并行运行的作业数量小于或等于第一运行器中的每个运行器对应的第二作业中的作业数量,以及第二运行器中的每个运行器所支持的并行运行的作业数量小于或等于第二运行器中的每个运行器对应的第三作业中的作业数量的情况下,从流水线中的第七阶段开始,将至少一个第二作业中的作业按照阶段的顺序依次编入流水线中的阶段;其中,至少一个第二作业中对应于同一个运行器的作业编入的阶段不相同,至少一个第二作业中对应于不同运行器的作业编入的阶段相同;从流水线中的第八阶段开始,将至少一个第三作业中的作业按照阶段的顺序依次编入流水线中的阶段,第七阶段为第八阶段之
前的一个阶段;其中,至少一个第三作业中对应于同一个运行器的作业编入的阶段不相同,至少一个第三作业中对应于不同运行器的作业编入的阶段相同。
81.举例中,请参阅图11,首先,某个项目配置有gitlab runner1和gitlab runner2,前置用例集属于gitlab runner1,条件用例集属于gitlab runner2,并且gitlab runner1和gitlab runner2所支持的并行运行的作业数都为1。其次,将前置用例集按照gitlab runner1划分为前置用例子集1、前置用例子集2和前置用例子集3,将条件用例集按照gitlab runner2划分为条件用例子集1、条件用例子集2和条件用例子集3。然后,将前置用例子集1组成为作业1,将前置用例子2组成为作业2,将前置用例子3组成为作业3,将条件用例子集1组成为作业4,将条件用例子集2组成为作业5,以及将条件用例子集3组成为作业6。其中,gitlab runner1对应的作业为作业1、作业2和作业3,gitlab runner2对应的作业为作业4、作业5和作业6。最后,由于gitlab runner1和gitlab runner2所支持的并行运行的作业数量小于其各自对应的作业中的作业数量,因此从阶段n开始,将作业1、作业2和作业3按照顺序依次进行编入。其中,作业1、作业2和作业3属于gitlab runner1,因此将作业2编入阶段n 1,将作业3编入阶段n 2。同理,从阶段n 1开始,将作业4、作业5和作业6依次编入不同的阶段中。
82.可见,通过考虑前置用例集和条件用例集之间所属的运行器,从而有利于保证流水线优化过程的准确性。
83.上述分别介绍仅存在独立用例集或者仅存在前置用例集和条件用例集的情况下的具体实施例。需要说明的是,在本领域技术人员能够理解的基础上,通过本技术实施例提供的技术方案和示图,可以获得在同时存在独立用例集、前置用例集和条件用例集的情况下的具体实施例,在此不再赘述。
84.可以看出,本技术实施例中,首先,通过获取对仓库管理系统中创建的项目配置的至少一个运行器以及至少一个运行器中的每个运行器所支持的并行运行的作业数量;然后,为该项目创建第一配置文件,并推送该第一配置文件到仓库管理系统以构建流水线;最后,根据该至少一个运行器所包含的运行器数量和该至少一个运行器中的每个运行器所支持的并行运行的作业数量确定针对流水线的构建时间的优化策略。由于本技术实施例通过配置的运行器数量和运行器所支持的并行运行的作业数量来优化持续集成环境中流水线的构建时间,从而有利于实现对流水线的构建时间进行优化,以及减小流水线的构建时间。
85.上述主要从方法侧执行过程的角度对本技术实施例的方案进行了介绍。可以理解的是,电子设备110为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所提供的实施例描述的各示例的单元及算法步骤,本技术能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以对每个特定的应用使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
86.本技术实施例可以根据上述方法示例对电子设备110进行功能单元的划分,例如,可以对应各个功能划分各个功能单元,也可以将两个或两个以上的功能集成在一个处理单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。需要说明的是,本技术实施例中对单元的划分是示意性的,只是一种逻辑功能划分,而实际
实现时可以有另外的划分方式。
87.在采用集成的单元的情况下,图12示出了一种持续集成环境的流水线优化装置的功能单元组成框图。持续集成环境的流水线优化装置1200应用于电子设备110,具体包括处理单元1220和通信单元1230。处理单元1220用于对电子设备110的动作进行控制管理,例如,处理单元1220用于支持电子设备110执行图2中的部分或全部步骤,以及用于本文所描述的技术的其它过程。通信单元1230用于支持电子设备110与仓库管理系统服务器120的通信。持续集成环境的流水线优化装置1200还可以包括存储单元1210,用于存储电子设备110的程序代码和数据。
88.其中,处理单元1220可以是处理器或控制器,例如可以是中央处理器(central processing unit,cpu)、通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application-specific integrated circuit,asic)、现场可编程门阵列(field programmable gate array,fpga)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本技术公开内容所描述的各种示例性的逻辑方框、模块和电路。处理单元1220也可以是实现计算功能的组合,例如包含一个或多个微处理器组合、dsp和微处理器的组合等。通信单元1230可以是通信接口、收发器、收发电路等。存储单元1210可以是存储器,而存储器可以包括随机存储记忆体(random access memory,ram)、只读存储器(read-only memory,rom)、可擦除可编程只读存储器(erasable programmable read only memory,eprom)或便携式只读存储器(compact disc read-only memory,cd-rom)。
89.具体实现时,处理单元1220用于执行如上述方法实施例中由电子设备110执行的任一步骤,且在执行诸如发送等数据传输时,可选择的调用通信单元1230来完成相应操作。下面进行详细说明。
90.处理单元1220用于:在仓库管理系统中创建项目,并获取为该项目配置的至少一个运行器以及该至少一个运行器中的每个运行器所支持的并行运行的作业数量,该至少一个运行器用于运行该项目的作业并将运行结果返回该仓库管理系统;在该项目的根目录中创建第一配置文件,并推送该第一配置文件到该仓库管理系统以构建持续集成环境的流水线;根据该至少一个运行器所包含的运行器数量和该至少一个运行器中的每个运行器所支持的并行运行的作业数量确定针对该流水线的构建时间的优化策略,并执行该优化策略。
91.可以看出,在本技术实施例中,首先,通过获取对仓库管理系统中创建的项目配置的至少一个运行器以及至少一个运行器中的每个运行器所支持的并行运行的作业数量;然后,为该项目创建第一配置文件,并推送该第一配置文件到仓库管理系统以构建流水线;最后,根据该至少一个运行器所包含的运行器数量和该至少一个运行器中的每个运行器所支持的并行运行的作业数量确定针对流水线的构建时间的优化策略。由于本技术实施例通过配置的运行器数量和运行器所支持的并行运行的作业数量来优化持续集成环境中流水线的构建时间,从而有利于实现对流水线的构建时间进行优化,以及减小流水线的构建时间。
92.在一个可能的示例中,在根据至少一个运行器所包含的运行器数量和至少一个运行器中的每个运行器所支持的并行运行的作业数量确定针对流水线的构建时间的优化策略方面,处理单元1220用于:根据至少一个运行器所包含的运行器数量将独立用例集划分为至少一个独立用例子集;其中,独立用例集用于表示独立用例组成的逻辑集合,独立用例
用于表示不可再分割和不以任何用例的输出为前提的执行单元;将至少一个独立用例子集中的每个子集组成为一个第一作业,得到至少一个第一作业;其中,至少一个第一作业中的每个第一作业对应有一个至少一个运行器中的运行器;根据每个运行器所支持的并行运行的作业数量将至少一个第一作业编入流水线中的阶段。
93.在一个可能的示例中,在根据每个运行器所支持的并行运行的作业数量将至少一个第一作业编入流水线中的阶段方面,处理单元1220用于:在每个运行器所支持的并行运行的作业数量大于或者等于每个运行器对应的第一作业中的作业数量的情况下,将至少一个第一作业编入流水线中的第一阶段,第一阶段为流水线中的一个阶段。
94.在一个可能的示例中,在根据每个运行器所支持的并行运行的作业数量将至少一个第一作业编入流水线中的阶段方面,处理单元1220用于:在每个运行器所支持的并行运行的作业数量小于或等于每个运行器对应的第一作业中的作业数量的情况下,从流水线中的第二阶段开始,将每个运行器对应的第一作业中选取的第一数量个的作业编入第二阶段,第一数量小于或者等于每个运行器所支持的并行运行的作业数量;将至少一个第一作业中的其余作业从第二阶段的下一个阶段开始编入。
95.在一个可能的示例中,在根据至少一个运行器所包含的运行器数量和至少一个运行器中的每个运行器所支持的并行运行的作业数量确定针对流水线的构建时间的优化策略方面,处理单元1220用于:根据至少一个运行器所包含的运行器数量将前置用例集划分为至少一个前置用例子集,以及将条件用例集划分为至少一个条件用例子集;其中,前置用例集用于表示前置用例组成的逻辑集合,条件用例集用于表示条件用例组成的逻辑集合,前置用例为独立用例或者条件用例,独立用例用于表示不可再分割和不以任何用例的输出为前提的执行单元,条件用例用于表示依赖于前置用例的输出为前提的执行单元,至少一个条件用例子集中的每个子集与至少一个前置用例子集中的每个子集一一对应;将至少一个前置用例子集中的每个子集组成为一个第二作业以得到至少一个第二作业,以及将至少一个条件用例子集中的每个子集组成为一个第三作业以得到至少一个第三作业;根据每个运行器所支持的并行运行的作业数量将至少一个第二作业和至少一个第三作业编入流水线中的阶段;其中,第一前置用例子集组成的一个第二作业编入的阶段在第一条件用例子集组成的一个第三作业编入的阶段之前,第一前置用例子集为至少一个前置用例子集中的一个子集,第一条件用例子集为在至少一个条件用例子集中依赖第一前置用例子集的输出为前提的一个子集。
96.在一个可能的示例中,至少一个前置用例子集中的所有第二作业对应于至少一个运行器中的第一运行器,至少一个条件用例子集中的所有第三作业对应于至少一个运行器中的第二运行器;其中,第一运行器和第二运行器的关系为以下一种:第一运行器和第二运行器为同一个运行器、第一运行器与第二运行器包含至少一个相同的运行器、第一运行器中的每个运行器与第二运行器中的每个运行器不相同。
97.在一个可能的示例中,在根据每个运行器所支持的并行运行的作业数量将至少一个第二作业和至少一个第三作业编入流水线中的阶段方面,处理单元1220用于:在第一运行器中的每个运行器所支持的并行运行的作业数量大于或等于第一运行器中的每个运行器对应的第二作业中的作业数量,以及第二运行器中的每个运行器所支持的并行运行的作业数量大于或等于第二运行器中的每个运行器对应的第三作业中的作业数量的情况下,将
至少一个第二作业编入流水线中的第三阶段,以及将至少一个第三作业编入流水线中的第四阶段,第三阶段为第四阶段之前的一个阶段;或者,从流水线中的第五阶段开始,将至少一个第二作业中的每个第二作业按照阶段的顺序依次编入流水线中的阶段;其中,至少一个第二作业中对应于同一个运行器的作业编入的阶段不相同,至少一个第二作业中对应于不同运行器的作业编入的阶段相同;从流水线中的第六阶段开始,将至少一个第三作业中的每个第三作业按照阶段的顺序依次编入流水线中的阶段,第五阶段为第六阶段之前的一个阶段;其中,至少一个第三作业中对应于同一个运行器的作业编入的阶段不相同,至少一个第三作业中对应于不同运行器的作业编入的阶段相同。
98.在一个可能的示例中,在根据每个运行器所支持的并行运行的作业数量将至少一个第二作业和至少一个第三作业编入流水线中的阶段方面,处理单元1220用于:在第一运行器中的每个运行器所支持的并行运行的作业数量小于或等于第一运行器中的每个运行器对应的第二作业中的作业数量,以及第二运行器中的每个运行器所支持的并行运行的作业数量小于或等于第二运行器中的每个运行器对应的第三作业中的作业数量的情况下,从流水线中的第七阶段开始,将至少一个第二作业中的作业按照阶段的顺序依次编入流水线中的阶段;其中,至少一个第二作业中对应于同一个运行器的作业编入的阶段不相同,至少一个第二作业中对应于不同运行器的作业编入的阶段相同;从流水线中的第八阶段开始,将至少一个第三作业中的作业按照阶段的顺序依次编入流水线中的阶段,第七阶段为第八阶段之前的一个阶段;其中,至少一个第三作业中对应于同一个运行器的作业编入的阶段不相同,至少一个第三作业中对应于不同运行器的作业编入的阶段相同。
99.本技术实施例还提供一种计算机可读存储介质,其中,该计算机可读存储介质存储用于电子数据交换的计算机程序,该计算机程序可操作来使得计算机执行如上述方法实施例中记载的任一方法的部分或全部步骤。
100.本技术实施例还提供一种计算机程序产品,其中,该计算机程序产品包括计算机程序,该计算机程序可操作来使计算机执行如上述方法实施例中记载的任一方法的部分或全部步骤。该计算机程序产品可以为一个软件安装包。
101.需要说明的是,对于上述的各方法实施例,为了简单描述,将其都表述为一系列的动作组合。本领域技术人员应该知悉,本技术不受所描述的动作顺序的限制,因为本技术实施例中的某些步骤可以采用其他顺序或者同时进行。此外,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本技术实施例所必须的。
102.在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
103.在本技术所提供的几个实施例中,本领域技术人员应该知悉,所描述的装置可以通过其它的方式实现。可以理解的是,上述描述的装置实施例仅仅是示意性的。例如,上述单元的划分只是一种逻辑功能划分,实际中可以有另外的划分方式。也就是说,多个单元或组件可以结合或集成到另一个软件,以及一些特征可以忽略或不执行。此外,所显示或讨论的相互之间的耦合、直接耦合或通信连接等方式可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电性或其它的形式。
104.上述作为分离部件说明的单元可以是物理上分开的,也可以不是。此外,上述作为
单元显示的部件可以是物理单元,也可以不是,即可以位于一个网络单元上,也可以分布到多个网络单元上。因此,上述各个实施例可以根据实际的需要选择其中的部分或者全部单元来实现。
105.另外,上述各个实施例中的各个功能单元可以集成在一个处理单元中,也可以存在不同的物理单元中,还可以两个或两个以上的功能单元集成在一个物理单元中。上述单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
106.上述单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。可以理解的是,本技术的技术方案(该技术方案对现有技术做出贡献的部分或者该技术方案的全部或部分)可以通过计算机软件产品的形式体现。该计算机软件产品存储在一个存储器中,包括若干指令用以使得计算机设备(个人计算机、服务器或者网络设备等)执行本技术实施例的全部或部分步骤。此外,上述存储器包括u盘、rom、ram、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
107.本领域技术人员应该知悉,本技术实施例的全部或部分步骤可以通过程序来指令相关的硬件来完成,该程序可以存储于存储器中,该存储器可以包括闪存盘、rom、ram、磁盘或光盘等。
108.以上对本技术实施例进行了详细介绍,本技术实施例中的说明只是用于帮助理解本技术的方法及其核心思想。本领域技术人员应该知悉,本技术实施例在具体实施方式和应用范围上均会有改变之处,至此,本说明书内容不应理解为对本技术的限制。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献