CI/CD流水线的资源调度方法、装置及设备与流程

文档序号:35969500发布日期:2023-11-09 10:09阅读:43来源:国知局
CI/CD流水线的资源调度方法、装置及设备与流程

本说明书涉及资源调度,尤其是涉及一种ci/cd流水线的资源调度方法、装置及设备。


背景技术:

1、ci/cd是一种用于持续集成(continuous integration,ci)、持续交付(continuous delivery,cd)和/或持续部署(continuous deployment,cd)的组件;其可以将传统开发过程中的代码构建、测试、部署以及基础设施配置等一系列流程的人工干预转变为自动化处理。ci/cd流水线是指:将从开发直至部署的整体生态链的每一个步骤都串联起来并代码化,使得开发流程能够通过自动化流水线的形式,变得更为高效、快速。换而言之,ci/cd流水线可以将开发人员提供的源代码进行自动化测试并完成交付和部署。

2、执行ci/cd流水线时需要使用容器资源(例如cpu、内存等)。例如,以代码构建任务为例,ci/cd流水线执行构建任务时由于构建自身技术特点,所需容器资源往往是瞬时升高;容器资源分配过少容易导致构建任务失败,而容器资源分配过多又会影响资源利用率。因此,如何为ci/cd流水线合理分配容器资源,以提高ci/cd流水线的任务执行成功率和容器资源的利用率,已成为目前亟待解决的技术问题。


技术实现思路

1、本说明书实施例的目的在于提供一种ci/cd流水线的资源调度方法、装置及设备,以提高ci/cd流水线的任务执行成功率和容器资源的利用率。

2、为达到上述目的,一方面,本说明书实施例提供了一种ci/cd流水线的资源调度方法,包括:

3、提供资源分配方式集合;所述资源分配方式集合包含多个资源分配方式子集,每个所述资源分配方式子集对应一个源代码类别;

4、解析目标ci/cd流水线待执行的目标源代码,以获得所述目标源代码的指定属性信息;

5、从所述资源分配方式集合中,根据所述指定属性信息匹配目标资源分配方式子集;

6、获取容器资源当前的使用状态以及所述目标ci/cd流水线所处的工作方式;

7、从所述目标资源分配方式子集中,根据所述使用状态和所述工作方式确定所述目标ci/cd流水线的资源分配方式。

8、本说明书实施例的ci/cd流水线的资源调度方法中,所述指定属性信息包括技术栈、技术栈版本及代码量。

9、本说明书实施例的ci/cd流水线的资源调度方法中,根据所述指定属性信息匹配目标资源分配方式子集,包括:

10、根据所述指定属性信息确定所述目标源代码所归属的源代码类别;

11、从所述资源分配方式集合中,匹配所述目标源代码所归属的源代码类别对应的资源分配方式子集,并将其作为目标资源分配方式子集。

12、本说明书实施例的ci/cd流水线的资源调度方法中,每个所述资源分配方式子集中包括:最小所需资源量、最快执行所需资源量和效率最高所需资源量;

13、所述最小所需资源量表征:ci/cd流水线成功执行本源代码类别下的源代码所需的最小资源量;

14、所述最快执行所需资源量表征:当分配给ci/cd流水线的资源逐渐增加至使其执行速度的变化率低于变化率阈值时的资源分配量,所述执行速度为ci/cd流水线执行本源代码类别下的源代码的执行速度;

15、所述效率最高所需资源量表征:ci/cd流水线执行本源代码类别下的源代码时,使ci/cd流水线的执行时长与资源分配量的乘积为最小时对应的资源分配量。

16、本说明书实施例的ci/cd流水线的资源调度方法中,根据所述使用状态和所述工作方式确定所述目标ci/cd流水线的资源分配方式,包括:

17、当所述目标ci/cd流水线处于手动运行模式,且所述容器资源的使用率低于使用率阈值时,将所述目标资源分配方式子集中的最快执行所需资源量,作为所述目标ci/cd流水线本次执行所述目标源代码的资源分配方式;

18、根据公式r=(yi/yi-1)/(xi/xi-1)计算所述目标ci/cd流水线本次执行所述目标源代码,相对于所述目标ci/cd流水线上一次执行所述目标源代码的执行时间减小幅度;

19、如果所述执行时间减小幅度达到第一阈值,则将所述目标ci/cd流水线下一次执行所述目标源代码的资源分配方式调整为:xi+1=xi+δ;

20、如果所述执行时间减小幅度未达到第一阈值,则将所述目标ci/cd流水线本次执行所述目标源代码的资源分配方式,作为所述目标ci/cd流水线下一次执行所述目标源代码的资源分配方式;

21、其中,r为执行时间减小幅度,yi为所述目标ci/cd流水线本次执行所述目标源代码的执行时间,yi-1为所述目标ci/cd流水线上一次执行所述目标源代码的执行时间,xi为所述目标ci/cd流水线本次执行所述目标源代码的资源分配方式,xi-1为所述目标ci/cd流水线上一次执行所述目标源代码的资源分配方式,xi+1为所述目标ci/cd流水线下一次执行所述目标源代码的资源分配方式,δ为资源增量步长。

22、本说明书实施例的ci/cd流水线的资源调度方法中,根据所述使用状态和所述工作方式确定所述目标ci/cd流水线的资源分配方式,还包括:

23、当所述目标ci/cd流水线处于手动运行模式,且所述容器资源的使用率不低于使用率阈值时,将所述目标资源分配方式子集中的效率最高所需资源量,作为所述目标ci/cd流水线本次执行所述目标源代码的资源分配方式;

24、根据公式计算所述目标ci/cd流水线本次执行所述目标源代码,相对于所述目标ci/cd流水线上一次执行所述目标源代码的执行效率增大幅度;

25、如果所述执行效率增大幅度未达到第二阈值,则将所述目标ci/cd流水线本次执行所述目标源代码的资源分配方式,作为所述目标ci/cd流水线下一次执行所述目标源代码的资源分配方式;

26、如果所述执行效率增大幅度达到第二阈值,则比较xi和xi-1的大小;

27、如果xi≥xi-1,则将所述目标ci/cd流水线下一次执行所述目标源代码的资源分配方式调整为:xi+1=xi+δ;

28、如果xi<xi-1,则将所述目标ci/cd流水线下一次执行所述目标源代码的资源分配方式调整为:xi+1=xi-δ;

29、其中,为执行效率增大幅度,yi为所述目标ci/cd流水线本次执行所述目标源代码的执行时间,yi-1为所述目标ci/cd流水线上一次执行所述目标源代码的执行时间,xi为所述目标ci/cd流水线本次执行所述目标源代码的资源分配方式,xi-1为所述目标ci/cd流水线上一次执行所述目标源代码的资源分配方式,xi+1为所述目标ci/cd流水线下一次执行所述目标源代码的资源分配方式,δ为资源增量步长。

30、本说明书实施例的ci/cd流水线的资源调度方法中,根据所述使用状态和所述工作方式确定所述目标ci/cd流水线的资源分配方式,还包括:

31、当所述目标ci/cd流水线处于自动运行模式时,将所述目标资源分配方式子集中的最小所需资源量,作为所述目标ci/cd流水线本次执行所述目标源代码的资源分配方式。

32、本说明书实施例的ci/cd流水线的资源调度方法中,在根据所述使用状态确定所述目标ci/cd流水线的资源分配方式之后,还包括:

33、记录所述目标ci/cd流水线执行所述目标源代码的执行时长及资源分配方式,以作为执行记录;

34、定期基于所有ci/cd流水线的历史执行记录,更新所述资源分配方式集合中每个资源分配方式子集合中的效率最高所需资源量。

35、本说明书实施例的ci/cd流水线的资源调度方法中,所述定期基于所有ci/cd流水线的历史执行记录,更新所述资源分配方式集合中每个资源分配方式子集合中的效率最高所需资源量,包括:

36、定期从所有ci/cd流水线的历史执行记录中,读取每个源代码类别下的各个效率最高所需资源量;

37、计算每个源代码类别下的各个效率最高所需资源量的均值;

38、将每个源代码类别下的各个效率最高所需资源量的均值,对应替换所述资源分配方式集合中每个资源分配方式子集合中的效率最高所需资源量。

39、本说明书实施例的ci/cd流水线的资源调度方法中,在读取每个源代码类别下的各个效率最高所需资源量之前,还包括:

40、剔除所述历史执行记录中,其技术栈、技术栈版本和/或代码量超出对应源代码类别的偏差允许范围的执行记录。

41、本说明书实施例的ci/cd流水线的资源调度方法中,所述技术栈包括源代码所使用的编程语言。

42、另一方面,本说明书实施例还提供了一种ci/cd流水线的资源调度装置,包括:

43、提供模块,用于提供资源分配方式集合;所述资源分配方式集合包含多个资源分配方式子集,每个所述资源分配方式子集对应一个源代码类别;

44、解析模块,用于解析目标ci/cd流水线待执行的目标源代码,以获得所述目标源代码的指定属性信息;

45、匹配模块,用于从所述资源分配方式集合中,根据所述指定属性信息匹配目标资源分配方式子集;

46、获取模块,用于获取容器资源当前的使用状态以及所述目标ci/cd流水线所处的工作方式;

47、确定模块,用于从所述目标资源分配方式子集中,根据所述使用状态和所述工作方式确定所述目标ci/cd流水线的资源分配方式。

48、另一方面,本说明书实施例还提供了一种计算机设备,包括存储器、处理器、以及存储在所述存储器上的计算机程序,所述计算机程序被所述处理器运行时,执行上述方法的指令。

49、另一方面,本说明书实施例还提供了一种计算机存储介质,其上存储有计算机程序,所述计算机程序被计算机设备的处理器运行时,执行上述方法的指令。

50、另一方面,本说明书实施例还提供了一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被计算机设备的处理器运行时,执行上述方法的指令。

51、由以上本说明书实施例提供的技术方案可见,本说明书实施例中,可以预先按照源代码的指定属性对各种典型的源代码进行分类,并预先验证每种源代码类别在不同情况下推荐的资源分配方式,即预先构建源代码类别对应的资源分配方式子集;对于任何待由ci/cd流水线执行的源代码,通过解析源代码可以获得其指定属性,从而根据指定属性可以匹配到对应的资源分配方式子集,然后根据容器资源当前的使用状态以及ci/cd流水线所处的工作方式,从该资源分配方式子集中确定出一个资源分配方式,以作为ci/cd流水线执行该源代码的时资源分配方式;由于在为ci/cd流水线分配容器资源时,综合考虑了源代码、容器资源和ci/cd流水线各自的情况,从而提高了ci/cd流水线的任务执行成功率,提高了容器资源的利用率。

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