CN116991374A - 构建持续集成任务的控制方法、装置、电子设备及介质 - Google Patents
构建持续集成任务的控制方法、装置、电子设备及介质 Download PDFInfo
- Publication number
- CN116991374A CN116991374A CN202311253687.5A CN202311253687A CN116991374A CN 116991374 A CN116991374 A CN 116991374A CN 202311253687 A CN202311253687 A CN 202311253687A CN 116991374 A CN116991374 A CN 116991374A
- Authority
- CN
- China
- Prior art keywords
- continuous integration
- integration task
- construction
- constructed
- execution
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 230000010354 integration Effects 0.000 title claims abstract description 294
- 238000000034 method Methods 0.000 title claims abstract description 55
- 238000010276 construction Methods 0.000 claims abstract description 210
- 238000011161 development Methods 0.000 claims abstract description 106
- 230000002085 persistent effect Effects 0.000 claims description 10
- 238000004590 computer program Methods 0.000 claims description 5
- 238000010586 diagram Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 239000002699 waste material Substances 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Control By Computers (AREA)
Abstract
本申请提供了一种构建持续集成任务的控制方法、装置、电子设备及介质,涉及计算机技术领域,控制方法包括:响应于开发组件中待构建持续集成任务的构建触发,获取至少一个预设构建条件,并确定所述待构建持续集成任务是否均满足所述至少一个预设构建条件;若否,则将所述待构建持续集成任务的当前状态保持为排队状态;若是,则将所述待构建持续集成任务的当前状态更新为执行状态以进行所述待构建持续集成任务的构建。采用本申请提供的技术方案能够使持续集成任务的构建得到更加精细的控制,在保证较高的资源利用率的同时,提高构建持续集成任务的灵活性以及效率。
Description
技术领域
本申请涉及计算机技术领域,尤其是涉及一种构建持续集成任务的控制方法、装置、电子设备及介质。
背景技术
持续集成是一种软件开发技术,指在开发阶段对项目进行持续性自动化编译、测试以达到控制代码质量的手段,可以提供及时发现问题、追踪问题、修复问题的机制,替代了传统的在所有代码编写完毕后才提交进行测试的方法,所以近几年被广泛应用于实际项目开发中。
目前,持续集成方法只能实现将代码构建成可以交付的制品,但是无法对代码构建的过程做出更加精细的控制,导致在持续集成的过程中,存在如下问题:如果同时执行的持续集成的构建较多,各个构建过程都在争抢构建资源,最终越争抢越慢,甚至会让一些构建过程因为超时失败,导致整体运行效率降低。目前业界只有一些粗略的方式来做一些控制,比如控制持续集成的构建只能按照串行执行,这样虽然避免了持续集成的多个构建同时执行导致的资源争夺问题,但是无疑也降低了执行效率,无法充分利用构建资源,降低了资源利用率。因此,如何控制持续集成的构建,以提高构建效率以及资源利用率,成为了亟待解决的问题。
发明内容
有鉴于此,本申请的目的在于提供一种构建持续集成任务的控制方法、装置、电子设备及介质,能够通过至少一个预设构建条件,对待构建持续集成任务的当前状态进行控制,确定是否对待构建持续集成任务进行构建,使得持续集成任务的构建得到更加精细的控制,在保证较高的资源利用率的同时,提高构建持续集成任务的灵活性以及效率。
本申请主要包括以下几个方面:
第一方面,本申请实施例提供了一种构建持续集成任务的控制方法,所述控制方法包括:
响应于开发组件中待构建持续集成任务的构建触发,获取至少一个预设构建条件,并确定所述待构建持续集成任务是否均满足所述至少一个预设构建条件;
若否,则将所述待构建持续集成任务的当前状态保持为排队状态;
若是,则将所述待构建持续集成任务的当前状态更新为执行状态以进行所述待构建持续集成任务的构建。
进一步的,若所述预设构建条件为全局构建条件时,通过以下步骤确定所述待构建持续集成任务是否满足所述全局构建条件:
获取每个开发组件中当前状态为执行状态的持续集成任务的数量;
将每个开发组件中当前状态为执行状态的持续集成任务的数量之和确定为当前总执行数量,确定所述当前总执行数量是否超过了预设全局最大构建并发数;
若是,则确定所述待构建持续集成任务不满足所述全局构建条件,继续等待任意一个开发组件中当前状态为执行状态的持续集成任务的构建执行完毕,在每个开发组件的当前状态为执行状态的持续集成任务中若任意一个持续集成任务的构建执行完毕,则将当前总执行数量减一,继续确定所述当前总执行数量是否超过了预设全局最大构建并发数;
若否,则确定所述待构建持续集成任务满足所述全局构建条件。
进一步的,若所述预设构建条件为组件构建条件时,通过以下步骤确定所述待构建持续集成任务是否满足所述组件构建条件:
将所述待构建持续集成任务所在的开发组件确定为目标开发组件,获取所述目标开发组件中当前状态为执行状态的持续集成任务的数量;
将所述目标开发组件中当前状态为执行状态的持续集成任务的数量确定为组件执行数量,确定所述组件执行数量是否达到所述目标开发组件对应的预设组件最大构建并发数;
若是,则确定所述待构建持续集成任务不满足所述组件构建条件,继续等待所述目标开发组件中当前状态为执行状态的持续集成任务的构建执行完毕,若所述目标开发组件中任意一个当前状态为执行状态的持续集成任务的构建执行完毕,则将所述组件执行数量减一,继续确定所述组件执行数量是否超过了所述目标开发组件对应的预设组件最大构建并发数;
若否,则确定所述待构建持续集成任务满足所述组件构建条件。
进一步的,若所述预设构建条件为取消构建条件时,通过以下步骤确定所述待构建持续集成任务是否满足所述取消构建条件:
获取待构建持续集成任务的分支信息;
确定所述分支信息是否属于第一预设分支;
若是,则在所述待构建持续集成任务所在的目标开发组件的当前状态为执行状态以及当前状态为排队状态的持续集成任务中,确定是否具有与所述待构建持续集成任务的分支信息相同分支信息的第一目标持续集成任务;
若具有,则确定所述待构建持续集成任务不满足所述取消构建条件,将所述第一目标持续集成任务从所述目标开发组件中删除后,确定所述待构建持续集成任务满足所述取消构建条件;
若不具有,则确定所述待构建持续集成任务满足所述取消构建条件。
进一步的,若所述预设构建条件为串行构建条件时,通过以下步骤确定所述待构建持续集成任务是否满足所述串行构建条件:
获取待构建持续集成任务的分支信息;
确定所述分支信息是否属于第二预设分支;
若是,则在所述待构建持续集成任务所在的目标开发组件的当前状态为执行状态的持续集成任务中,确定是否具有与所述待构建持续集成任务的分支信息相同分支信息的第二目标持续集成任务;
若具有,则确定所述待构建持续集成任务不满足所述串行构建条件,在所述第二目标持续集成任务的构建执行完毕后,确定所述待构建持续集成任务满足所述串行构建条件;
若不具有,则确定所述待构建持续集成任务满足所述串行构建条件。
第二方面,本申请实施例还提供了一种构建持续集成任务的控制装置,所述控制装置包括:
分析模块,用于响应于开发组件中待构建持续集成任务的构建触发,获取至少一个预设构建条件,并确定所述待构建持续集成任务是否均满足所述至少一个预设构建条件;
第一控制模块,用于在所述待构建持续集成任务不满足任意一个预设构建条件时,将所述待构建持续集成任务的当前状态保持为排队状态;
第二控制模块,用于在所述待构建持续集成任务均满足至少一个预设构建条件时,将所述待构建持续集成任务的当前状态更新为执行状态以进行所述待构建持续集成任务的构建。
进一步的,若所述预设构建条件为全局构建条件时,所述分析模块在用于确定所述待构建持续集成任务是否满足所述全局构建条件时,所述分析模块具体用于:
获取每个开发组件中当前状态为执行状态的持续集成任务的数量;
将每个开发组件中当前状态为执行状态的持续集成任务的数量之和确定为当前总执行数量,确定所述当前总执行数量是否超过了预设全局最大构建并发数;
若是,则确定所述待构建持续集成任务不满足所述全局构建条件,继续等待任意一个开发组件中当前状态为执行状态的持续集成任务的构建执行完毕,在每个开发组件的当前状态为执行状态的持续集成任务中若任意一个持续集成任务的构建执行完毕,则将当前总执行数量减一,继续确定所述当前总执行数量是否超过了预设全局最大构建并发数;
若否,则确定所述待构建持续集成任务满足所述全局构建条件。
进一步的,若所述预设构建条件为组件构建条件时,所述分析模块在用于确定所述待构建持续集成任务是否满足所述组件构建条件时,所述分析模块具体用于:
将所述待构建持续集成任务所在的开发组件确定为目标开发组件,获取所述目标开发组件中当前状态为执行状态的持续集成任务的数量;
将所述目标开发组件中当前状态为执行状态的持续集成任务的数量确定为组件执行数量,确定所述组件执行数量是否达到所述目标开发组件对应的预设组件最大构建并发数;
若是,则确定所述待构建持续集成任务不满足所述组件构建条件,继续等待所述目标开发组件中当前状态为执行状态的持续集成任务的构建执行完毕,若所述目标开发组件中任意一个当前状态为执行状态的持续集成任务的构建执行完毕,则将所述组件执行数量减一,继续确定所述组件执行数量是否超过了所述目标开发组件对应的预设组件最大构建并发数;
若否,则确定所述待构建持续集成任务满足所述组件构建条件。
第三方面,本申请实施例还提供一种电子设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行如上述的构建持续集成任务的控制方法的步骤。
第四方面,本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如上述的构建持续集成任务的控制方法的步骤。
本申请实施例提供的一种构建持续集成任务的控制方法、装置、电子设备及介质,所述控制方法包括:响应于开发组件中待构建持续集成任务的构建触发,获取至少一个预设构建条件,并确定所述待构建持续集成任务是否均满足所述至少一个预设构建条件;若否,则将所述待构建持续集成任务的当前状态保持为排队状态;若是,则将所述待构建持续集成任务的当前状态更新为执行状态以进行所述待构建持续集成任务的构建。
这样,采用本申请提供的技术方案能够通过至少一个预设构建条件,对待构建持续集成任务的当前状态进行控制,确定是否对待构建持续集成任务进行构建,使得持续集成任务的构建得到更加精细的控制,在保证较高的资源利用率的同时,提高构建持续集成任务的灵活性以及效率。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本申请实施例所提供的一种构建持续集成任务的控制方法的流程图;
图2示出了本申请实施例所提供的另一种构建持续集成任务的控制方法的流程图;
图3示出了本申请实施例所提供的一种构建持续集成任务的控制装置的结构示意图;
图4示出了本申请实施例所提供的一种电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,应当理解,本申请中的附图仅起到说明和描述的目的,并不用于限定本申请的保护范围。另外,应当理解,示意性的附图并未按实物比例绘制。本申请中使用的流程图示出了根据本申请的一些实施例实现的操作。应当理解,流程图的操作可以不按顺序实现,没有逻辑的上下文关系的步骤可以反转顺序或者同时实施。此外,本领域技术人员在本申请内容的指引下,可以向流程图添加一个或多个其他操作,也可以从流程图中移除一个或多个操作。
另外,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的全部其他实施例,都属于本申请保护的范围。
为了使得本领域技术人员能够使用本申请内容,结合特定应用场景“构建持续集成任务的控制”,给出以下实施方式,对于本领域技术人员来说,在不脱离本申请的精神和范围的情况下,可以将这里定义的一般原理应用于其他实施例和应用场景。
本申请实施例下述方法、装置、电子设备或计算机可读存储介质可以应用于任何需要控制构建持续集成任务的场景,本申请实施例并不对具体的应用场景作限制,任何使用本申请实施例提供的一种构建持续集成任务的控制方法、装置、电子设备及存储介质的方案均在本申请保护范围内。
基于此,本申请提出了一种构建持续集成任务的控制方法、装置、电子设备及介质,所述控制方法包括:响应于开发组件中待构建持续集成任务的构建触发,获取至少一个预设构建条件,并确定所述待构建持续集成任务是否均满足所述至少一个预设构建条件;若否,则将所述待构建持续集成任务的当前状态保持为排队状态;若是,则将所述待构建持续集成任务的当前状态更新为执行状态以进行所述待构建持续集成任务的构建。
这样,采用本申请提供的技术方案能够通过至少一个预设构建条件,对待构建持续集成任务的当前状态进行控制,确定是否对待构建持续集成任务进行构建,使得持续集成任务的构建得到更加精细的控制,在保证较高的资源利用率的同时,提高构建持续集成任务的灵活性以及效率。
为便于对本申请实施例进行理解,首先对本申请实施例所公开的一种构建持续集成任务的控制方法进行详细介绍。
请参阅图1,图1为本申请实施例所提供的一种构建持续集成任务的控制方法的流程图,如图1中所示,所述控制方法包括:
S101、响应于开发组件中待构建持续集成任务的构建触发,获取至少一个预设构建条件,并确定所述待构建持续集成任务是否均满足所述至少一个预设构建条件;
该步骤中,开发组件为待开发产品中的任意一个组件,每个待开发产品由多个开发组件构成,每个开发组件中包括多个持续集成任务。
这里,预设构建条件包括以下至少一个:全局构建条件、组件构建条件、取消构建条件以及串行构建条件。
作为示例,若是预设构建条件有全局构建条件以及组件构建条件这两种条件,则只有当待构建持续集成任务均满足这两种条件后,才能进入步骤S103,否则进入步骤S102。
需要说明的是,若预设构建条件为全局构建条件时,请参阅图2,图2为本申请实施例所提供的另一种构建持续集成任务的控制方法的流程图,如图2中所示,通过以下步骤确定待构建持续集成任务是否满足全局构建条件:
S201、获取每个开发组件中当前状态为执行状态的持续集成任务的数量;
该步骤中,增加了全局最大构建并发数的配置,该配置声明了同一时刻可以处于执行状态的构建数目。这里,每个开发组件中的每个持续集成任务的当前状态为执行状态或者排队状态,执行状态为正在执行创建的状态,排队状态为正在排队等待创建的状态。
S202、将每个开发组件中当前状态为执行状态的持续集成任务的数量之和确定为当前总执行数量,确定所述当前总执行数量是否超过了预设全局最大构建并发数;
S203、若是,则确定所述待构建持续集成任务不满足所述全局构建条件,继续等待任意一个开发组件中当前状态为执行状态的持续集成任务的构建执行完毕,在每个开发组件的当前状态为执行状态的持续集成任务中若任意一个持续集成任务的构建执行完毕,则将当前总执行数量减一,继续确定所述当前总执行数量是否超过了预设全局最大构建并发数;
S204、若否,则确定所述待构建持续集成任务满足所述全局构建条件。
在步骤S202至步骤S204中,在确定待构建持续集成任务是否满足全局构建条件时,检查已经运行的构建的总体数目(当前总执行数量)是否已经超过了配置(预设全局最大构建并发数),如果已经超过了配置,则处于排队状态,否则执行创建(当前状态为执行状态);只有执行状态中的构建执行完了,才能够确定处于排队状态中持续集成任务是否可以进行构建,当处于排队状态中的持续集成任务开始进行构建,即当前状态从排队状态更新为执行状态时,将当前总执行数量加一,并进行持续集成任务的构建。
需要说明的是,若预设构建条件为组件构建条件时,通过以下步骤确定待构建持续集成任务是否满足组件构建条件:
一、将所述待构建持续集成任务所在的开发组件确定为目标开发组件,获取所述目标开发组件中当前状态为执行状态的持续集成任务的数量;
二、将所述目标开发组件中当前状态为执行状态的持续集成任务的数量确定为组件执行数量,确定所述组件执行数量是否达到所述目标开发组件对应的预设组件最大构建并发数;
三、若是,则确定所述待构建持续集成任务不满足所述组件构建条件,继续等待所述目标开发组件中当前状态为执行状态的持续集成任务的构建执行完毕,若所述目标开发组件中任意一个当前状态为执行状态的持续集成任务的构建执行完毕,则将所述组件执行数量减一,继续确定所述组件执行数量是否超过了所述目标开发组件对应的预设组件最大构建并发数;
四、若否,则确定所述待构建持续集成任务满足所述组件构建条件。
在上述步骤一至步骤四中,为每个开发组件的构建增加最大并发数量的配置,该配置声明了同一时刻同属于当前组件的构建允许存在的处于执行状态的最大数目。在确定待构建持续集成任务是否满足组件构建条件时,先检查同属一个组件的处于执行状态的构建数目(组件执行数量)是否达到配置值(预设组件最大构建并发数),如果已经达到配置值,则处于排队状态,否则执行创建(当前状态为执行状态);只有同属一个组件的执行中的构建执行完了,才能够确定该组件处于排队状态中的持续集成任务是否可以进行构建,当该组件处于排队状态中的持续集成任务开始进行构建,即当前状态从排队状态更新为执行状态时,将组件执行数量加一,并进行该组件排队状态中持续集成任务的构建。
需要说明的是,若预设构建条件为取消构建条件时,通过以下步骤确定待构建持续集成任务是否满足取消构建条件:
1)、获取待构建持续集成任务的分支信息;
2)、确定所述分支信息是否属于第一预设分支;
3)、若是,则在所述待构建持续集成任务所在的目标开发组件的当前状态为执行状态以及当前状态为排队状态的持续集成任务中,确定是否具有与所述待构建持续集成任务的分支信息相同分支信息的第一目标持续集成任务;
4)、若具有,则确定所述待构建持续集成任务不满足所述取消构建条件,将所述第一目标持续集成任务从所述目标开发组件中删除后,确定所述待构建持续集成任务满足所述取消构建条件;
5)、若不具有,则确定所述待构建持续集成任务满足所述取消构建条件。
上述步骤1)至步骤5)为特定分支的构建自动取消的配置,持续集成会将代码构建成制品,代码中存在分支的概念,比如稳定的主(master)分支和用于开发的开发(develop)分支。开发人员在开发过程中,可能会连续多次进行多个提交(commit),如果包含代码触发器,会导致存在多个构建同时执行,但是最终需要的是最后一个commit的构建结果。如果用户手动取消执行的话,又会繁琐,不手动取消,会造成资源的浪费以及构建效率低下。所以本实施例提供的特定分支自动取消技术,会检查执行中和排队中的构建是否存在与当前待构建持续集成任务相同的分支(第一预设分支,例如develop分支)或者合并请求,如果存在,则先将执行中和/或排队中与当前待构建持续集成任务具有相同develop分支的构建取消掉,随后再确定当前待构建持续集成任务是否可以执行(是否均满足至少一个预设构建条件)。
需要说明的是,若预设构建条件为串行构建条件时,通过以下步骤确定待构建持续集成任务是否满足串行构建条件:
(1)、获取待构建持续集成任务的分支信息;
(2)、确定所述分支信息是否属于第二预设分支;
(3)、若是,则在所述待构建持续集成任务所在的目标开发组件的当前状态为执行状态的持续集成任务中,确定是否具有与所述待构建持续集成任务的分支信息相同分支信息的第二目标持续集成任务;
(4)、若具有,则确定所述待构建持续集成任务不满足所述串行构建条件,在所述第二目标持续集成任务的构建执行完毕后,确定所述待构建持续集成任务满足所述串行构建条件;
(5)、若不具有,则确定所述待构建持续集成任务满足所述串行构建条件。
在上述步骤(1)至步骤(5)为特定分支的构建进行串行执行的配置,现有的持续集成工具只能支持配置某个组件构建整体按照串行执行或者并行执行,不具有灵活性。而且不同的代码分支对构建串行并行的要求不同,如果实现该需求,只能创建不同的构建来对应不同的分支,一个构建配置为串行构建,一个构建配置为并行构建,不同分支使用不同的构建来构建制品,这样会造成资源的浪费。所以本实施例提供的配置特定分支串行执行的技术可以在一个构建中完成对某些分支串行执行,某些分支并行执行的配置,例如,先获取当前待构建持续集成任务的分支信息,随后判断执行中的构建是否存在与当前待构建持续集成任务相同的分支(第二预设分支,例如master分支),如果存在,则当前待构建持续集成任务处于排队状态,等待执行状态中具有相同第二预设分支的构建执行完毕后,再将当前待构建持续集成任务的当前状态更新为执行状态进行构建(串行执行);否则将当前待构建持续集成任务的当前状态更新为执行状态直接进行构建(并行执行)。这里,相同第二预设分支的构建在构建结束时会通知处于排队状态构建检查自身是否均满足至少一个预设构建条件,若均满足则开始执行,否则继续等待。这样有利于提高构建效率,降低创建冗余的构建。
S102、若否,则将所述待构建持续集成任务的当前状态保持为排队状态;
作为示例,预设构建条件有三个,若待构建持续集成任务不满足任意一个预设构建条件时,则保持排队状态,继续等待,直至待构建持续集成任务满足三个预设构建条件,进入步骤S103。
S103、若是,则将所述待构建持续集成任务的当前状态更新为执行状态以进行所述待构建持续集成任务的构建。
该步骤中,当待构建持续集成任务满足所有预设构建条件时,才可将待构建持续集成任务的当前状态更新为执行状态以进行构建。
综上,首先,在未增加全局和同一组件最大并发数技术之前,如果多条构建同时执行,会造成比较严重的资源争夺,导致整体构建速度变慢,某些构建甚至超时失败。本实施例通过增加全局最大并发数以及同一组件最大并发数控制后,可以根据资源进行合理配置,保证集群中的构建处于一个合理的数量,提高构建效率。其次,在没有增加自动取消的技术前,同一个分支的代码被连续触发构建时,会执行相关的构建,但是只有最后一次的构建是需要保留的,一般情况下前几次的构建都是不需要的,在这种情况下就造成了资源的浪费。在本实施例采用该技术之后,可以识别相同特定分支的构建并且进行自动取消,确保只保留最后一次的构建,节省资源,提高了构建效率。最后,在没有增加特定分支串行的技术之前,如果想要实现某些特定分支的串行执行,需要专门为这些分支创建构建,并且设置构建的执行方式为串行执行,极大的增加了维护的工作量,也浪费了构建资源。在本实施例采用该技术后,可以在同一条构建中完成某些特定分支串行和某些特定分支并行的配置,减少了冗余构建,提高了资源利用率。
本申请实施例提供的一种构建持续集成任务的控制方法,所述控制方法包括:响应于开发组件中待构建持续集成任务的构建触发,获取至少一个预设构建条件,并确定所述待构建持续集成任务是否均满足所述至少一个预设构建条件;若否,则将所述待构建持续集成任务的当前状态保持为排队状态;若是,则将所述待构建持续集成任务的当前状态更新为执行状态以进行所述待构建持续集成任务的构建。
这样,采用本申请提供的技术方案能够通过至少一个预设构建条件,对待构建持续集成任务的当前状态进行控制,确定是否对待构建持续集成任务进行构建,使得持续集成任务的构建得到更加精细的控制,在保证较高的资源利用率的同时,提高构建持续集成任务的灵活性以及效率。
基于同一发明构思,本申请实施例还提供了与上述一种构建持续集成任务的控制方法对应的一种构建持续集成任务的控制装置,由于本申请实施例中的控制装置解决问题的原理与本申请实施例上述控制方法相似,因此控制装置的实施可以参见控制方法的实施,重复之处不再赘述。
请参阅图3,图3为本申请实施例所提供的一种构建持续集成任务的控制装置的结构示意图,如图3中所示,所述控制装置310包括:
分析模块311,用于响应于开发组件中待构建持续集成任务的构建触发,获取至少一个预设构建条件,并确定所述待构建持续集成任务是否均满足所述至少一个预设构建条件;
第一控制模块312,用于在所述待构建持续集成任务不满足任意一个预设构建条件时,将所述待构建持续集成任务的当前状态保持为排队状态;
第二控制模块313,用于在所述待构建持续集成任务均满足至少一个预设构建条件时,将所述待构建持续集成任务的当前状态更新为执行状态以进行所述待构建持续集成任务的构建。
可选的,若所述预设构建条件为全局构建条件时,所述分析模块311在用于确定所述待构建持续集成任务是否满足所述全局构建条件时,所述分析模块311具体用于:
获取每个开发组件中当前状态为执行状态的持续集成任务的数量;
将每个开发组件中当前状态为执行状态的持续集成任务的数量之和确定为当前总执行数量,确定所述当前总执行数量是否超过了预设全局最大构建并发数;
若是,则确定所述待构建持续集成任务不满足所述全局构建条件,继续等待任意一个开发组件中当前状态为执行状态的持续集成任务的构建执行完毕,在每个开发组件的当前状态为执行状态的持续集成任务中若任意一个持续集成任务的构建执行完毕,则将当前总执行数量减一,继续确定所述当前总执行数量是否超过了预设全局最大构建并发数;
若否,则确定所述待构建持续集成任务满足所述全局构建条件。
可选的,若所述预设构建条件为组件构建条件时,所述分析模块311在用于确定所述待构建持续集成任务是否满足所述组件构建条件时,所述分析模块311具体用于:
将所述待构建持续集成任务所在的开发组件确定为目标开发组件,获取所述目标开发组件中当前状态为执行状态的持续集成任务的数量;
将所述目标开发组件中当前状态为执行状态的持续集成任务的数量确定为组件执行数量,确定所述组件执行数量是否达到所述目标开发组件对应的预设组件最大构建并发数;
若是,则确定所述待构建持续集成任务不满足所述组件构建条件,继续等待所述目标开发组件中当前状态为执行状态的持续集成任务的构建执行完毕,若所述目标开发组件中任意一个当前状态为执行状态的持续集成任务的构建执行完毕,则将所述组件执行数量减一,继续确定所述组件执行数量是否超过了所述目标开发组件对应的预设组件最大构建并发数;
若否,则确定所述待构建持续集成任务满足所述组件构建条件。
可选的,若所述预设构建条件为取消构建条件时,所述分析模块311在用于确定所述待构建持续集成任务是否满足所述取消构建条件时,所述分析模块311具体用于:
获取待构建持续集成任务的分支信息;
确定所述分支信息是否属于第一预设分支;
若是,则在所述待构建持续集成任务所在的目标开发组件的当前状态为执行状态以及当前状态为排队状态的持续集成任务中,确定是否具有与所述待构建持续集成任务的分支信息相同分支信息的第一目标持续集成任务;
若具有,则确定所述待构建持续集成任务不满足所述取消构建条件,将所述第一目标持续集成任务从所述目标开发组件中删除后,确定所述待构建持续集成任务满足所述取消构建条件;
若不具有,则确定所述待构建持续集成任务满足所述取消构建条件。
可选的,若所述预设构建条件为串行构建条件时,所述分析模块311在用于确定所述待构建持续集成任务是否满足所述串行构建条件时,所述分析模块311具体用于:
获取待构建持续集成任务的分支信息;
确定所述分支信息是否属于第二预设分支;
若是,则在所述待构建持续集成任务所在的目标开发组件的当前状态为执行状态的持续集成任务中,确定是否具有与所述待构建持续集成任务的分支信息相同分支信息的第二目标持续集成任务;
若具有,则确定所述待构建持续集成任务不满足所述串行构建条件,在所述第二目标持续集成任务的构建执行完毕后,确定所述待构建持续集成任务满足所述串行构建条件;
若不具有,则确定所述待构建持续集成任务满足所述串行构建条件。
本申请实施例提供的一种构建持续集成任务的控制装置,所述控制装置包括:分析模块,用于响应于开发组件中待构建持续集成任务的构建触发,获取至少一个预设构建条件,并确定所述待构建持续集成任务是否均满足所述至少一个预设构建条件;第一控制模块,用于在所述待构建持续集成任务不满足任意一个预设构建条件时,将所述待构建持续集成任务的当前状态保持为排队状态;第二控制模块,用于在所述待构建持续集成任务均满足至少一个预设构建条件时,将所述待构建持续集成任务的当前状态更新为执行状态以进行所述待构建持续集成任务的构建。
这样,采用本申请提供的技术方案能够通过至少一个预设构建条件,对待构建持续集成任务的当前状态进行控制,确定是否对待构建持续集成任务进行构建,使得持续集成任务的构建得到更加精细的控制,在保证较高的资源利用率的同时,提高构建持续集成任务的灵活性以及效率。
请参阅图4,图4为本申请实施例所提供的一种电子设备的结构示意图。如图4中所示,所述电子设备400包括处理器410、存储器420和总线430。
所述存储器420存储有所述处理器410可执行的机器可读指令,当电子设备400运行时,所述处理器410与所述存储器420之间通过总线430通信,所述机器可读指令被所述处理器410执行时,可以执行如上述图1至图2所示方法实施例中的构建持续集成任务的控制方法的步骤,具体实现方式可参见方法实施例,在此不再赘述。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时可以执行如上述图1至图2所示方法实施例中的构建持续集成任务的控制方法的步骤,具体实现方式可参见方法实施例,在此不再赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本申请的具体实施方式,用以说明本申请的技术方案,而非对其限制,本申请的保护范围并不局限于此,尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本申请实施例技术方案的精神和范围,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种构建持续集成任务的控制方法,其特征在于,所述控制方法包括:
响应于开发组件中待构建持续集成任务的构建触发,获取至少一个预设构建条件,并确定所述待构建持续集成任务是否均满足所述至少一个预设构建条件;
若否,则将所述待构建持续集成任务的当前状态保持为排队状态;
若是,则将所述待构建持续集成任务的当前状态更新为执行状态以进行所述待构建持续集成任务的构建。
2.根据权利要求1所述的控制方法,其特征在于,若所述预设构建条件为全局构建条件时,通过以下步骤确定所述待构建持续集成任务是否满足所述全局构建条件:
获取每个开发组件中当前状态为执行状态的持续集成任务的数量;
将每个开发组件中当前状态为执行状态的持续集成任务的数量之和确定为当前总执行数量,确定所述当前总执行数量是否超过了预设全局最大构建并发数;
若是,则确定所述待构建持续集成任务不满足所述全局构建条件,继续等待任意一个开发组件中当前状态为执行状态的持续集成任务的构建执行完毕,在每个开发组件的当前状态为执行状态的持续集成任务中若任意一个持续集成任务的构建执行完毕,则将当前总执行数量减一,继续确定所述当前总执行数量是否超过了预设全局最大构建并发数;
若否,则确定所述待构建持续集成任务满足所述全局构建条件。
3.根据权利要求1所述的控制方法,其特征在于,若所述预设构建条件为组件构建条件时,通过以下步骤确定所述待构建持续集成任务是否满足所述组件构建条件:
将所述待构建持续集成任务所在的开发组件确定为目标开发组件,获取所述目标开发组件中当前状态为执行状态的持续集成任务的数量;
将所述目标开发组件中当前状态为执行状态的持续集成任务的数量确定为组件执行数量,确定所述组件执行数量是否达到所述目标开发组件对应的预设组件最大构建并发数;
若是,则确定所述待构建持续集成任务不满足所述组件构建条件,继续等待所述目标开发组件中当前状态为执行状态的持续集成任务的构建执行完毕,若所述目标开发组件中任意一个当前状态为执行状态的持续集成任务的构建执行完毕,则将所述组件执行数量减一,继续确定所述组件执行数量是否超过了所述目标开发组件对应的预设组件最大构建并发数;
若否,则确定所述待构建持续集成任务满足所述组件构建条件。
4.根据权利要求1所述的控制方法,其特征在于,若所述预设构建条件为取消构建条件时,通过以下步骤确定所述待构建持续集成任务是否满足所述取消构建条件:
获取待构建持续集成任务的分支信息;
确定所述分支信息是否属于第一预设分支;
若是,则在所述待构建持续集成任务所在的目标开发组件的当前状态为执行状态以及当前状态为排队状态的持续集成任务中,确定是否具有与所述待构建持续集成任务的分支信息相同分支信息的第一目标持续集成任务;
若具有,则确定所述待构建持续集成任务不满足所述取消构建条件,将所述第一目标持续集成任务从所述目标开发组件中删除后,确定所述待构建持续集成任务满足所述取消构建条件;
若不具有,则确定所述待构建持续集成任务满足所述取消构建条件。
5.根据权利要求1所述的控制方法,其特征在于,若所述预设构建条件为串行构建条件时,通过以下步骤确定所述待构建持续集成任务是否满足所述串行构建条件:
获取待构建持续集成任务的分支信息;
确定所述分支信息是否属于第二预设分支;
若是,则在所述待构建持续集成任务所在的目标开发组件的当前状态为执行状态的持续集成任务中,确定是否具有与所述待构建持续集成任务的分支信息相同分支信息的第二目标持续集成任务;
若具有,则确定所述待构建持续集成任务不满足所述串行构建条件,在所述第二目标持续集成任务的构建执行完毕后,确定所述待构建持续集成任务满足所述串行构建条件;
若不具有,则确定所述待构建持续集成任务满足所述串行构建条件。
6.一种构建持续集成任务的控制装置,其特征在于,所述控制装置包括:
分析模块,用于响应于开发组件中待构建持续集成任务的构建触发,获取至少一个预设构建条件,并确定所述待构建持续集成任务是否均满足所述至少一个预设构建条件;
第一控制模块,用于在所述待构建持续集成任务不满足任意一个预设构建条件时,将所述待构建持续集成任务的当前状态保持为排队状态;
第二控制模块,用于在所述待构建持续集成任务均满足至少一个预设构建条件时,将所述待构建持续集成任务的当前状态更新为执行状态以进行所述待构建持续集成任务的构建。
7.根据权利要求6所述的控制装置,其特征在于,若所述预设构建条件为全局构建条件时,所述分析模块在用于确定所述待构建持续集成任务是否满足所述全局构建条件时,所述分析模块具体用于:
获取每个开发组件中当前状态为执行状态的持续集成任务的数量;
将每个开发组件中当前状态为执行状态的持续集成任务的数量之和确定为当前总执行数量,确定所述当前总执行数量是否超过了预设全局最大构建并发数;
若是,则确定所述待构建持续集成任务不满足所述全局构建条件,继续等待任意一个开发组件中当前状态为执行状态的持续集成任务的构建执行完毕,在每个开发组件的当前状态为执行状态的持续集成任务中若任意一个持续集成任务的构建执行完毕,则将当前总执行数量减一,继续确定所述当前总执行数量是否超过了预设全局最大构建并发数;
若否,则确定所述待构建持续集成任务满足所述全局构建条件。
8.根据权利要求6所述的控制装置,其特征在于,若所述预设构建条件为组件构建条件时,所述分析模块在用于确定所述待构建持续集成任务是否满足所述组件构建条件时,所述分析模块具体用于:
将所述待构建持续集成任务所在的开发组件确定为目标开发组件,获取所述目标开发组件中当前状态为执行状态的持续集成任务的数量;
将所述目标开发组件中当前状态为执行状态的持续集成任务的数量确定为组件执行数量,确定所述组件执行数量是否达到所述目标开发组件对应的预设组件最大构建并发数;
若是,则确定所述待构建持续集成任务不满足所述组件构建条件,继续等待所述目标开发组件中当前状态为执行状态的持续集成任务的构建执行完毕,若所述目标开发组件中任意一个当前状态为执行状态的持续集成任务的构建执行完毕,则将所述组件执行数量减一,继续确定所述组件执行数量是否超过了所述目标开发组件对应的预设组件最大构建并发数;
若否,则确定所述待构建持续集成任务满足所述组件构建条件。
9.一种电子设备,其特征在于,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过所述总线进行通信,所述机器可读指令被所述处理器运行时执行如权利要求1至5任一所述的构建持续集成任务的控制方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如权利要求1至5任一所述的构建持续集成任务的控制方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311253687.5A CN116991374B (zh) | 2023-09-27 | 2023-09-27 | 构建持续集成任务的控制方法、装置、电子设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311253687.5A CN116991374B (zh) | 2023-09-27 | 2023-09-27 | 构建持续集成任务的控制方法、装置、电子设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116991374A true CN116991374A (zh) | 2023-11-03 |
CN116991374B CN116991374B (zh) | 2024-01-19 |
Family
ID=88530532
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311253687.5A Active CN116991374B (zh) | 2023-09-27 | 2023-09-27 | 构建持续集成任务的控制方法、装置、电子设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116991374B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110515625A (zh) * | 2019-08-02 | 2019-11-29 | 苏州浪潮智能科技有限公司 | 任务构建方法、装置、设备及计算机可读存储介质 |
CN111611157A (zh) * | 2020-05-08 | 2020-09-01 | 珠海全志科技股份有限公司 | Gms持续集成构建自动化测试方法及系统 |
CN113791891A (zh) * | 2021-01-29 | 2021-12-14 | 北京沃东天骏信息技术有限公司 | 持续集成任务构建方法、装置、设备和计算机可读介质 |
CN114416315A (zh) * | 2022-01-18 | 2022-04-29 | 上海金融期货信息技术有限公司 | 持续集成系统中的任务动态调度方法和系统 |
WO2022142601A1 (zh) * | 2020-12-28 | 2022-07-07 | 京东科技控股股份有限公司 | 应用程序的构建方法、装置及计算机设备 |
-
2023
- 2023-09-27 CN CN202311253687.5A patent/CN116991374B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110515625A (zh) * | 2019-08-02 | 2019-11-29 | 苏州浪潮智能科技有限公司 | 任务构建方法、装置、设备及计算机可读存储介质 |
CN111611157A (zh) * | 2020-05-08 | 2020-09-01 | 珠海全志科技股份有限公司 | Gms持续集成构建自动化测试方法及系统 |
WO2022142601A1 (zh) * | 2020-12-28 | 2022-07-07 | 京东科技控股股份有限公司 | 应用程序的构建方法、装置及计算机设备 |
CN113791891A (zh) * | 2021-01-29 | 2021-12-14 | 北京沃东天骏信息技术有限公司 | 持续集成任务构建方法、装置、设备和计算机可读介质 |
CN114416315A (zh) * | 2022-01-18 | 2022-04-29 | 上海金融期货信息技术有限公司 | 持续集成系统中的任务动态调度方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN116991374B (zh) | 2024-01-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6499986B2 (ja) | フォールトトレラントバッチ処理 | |
KR20180030115A (ko) | 분산 데이터베이스 시스템을 갖는 네트워크에서 데이터베이스 접근 제어를 제공하기 위한 방법 및 아키텍처 | |
CN109886693B (zh) | 区块链系统的共识实现方法、装置、设备和介质 | |
US20080114962A1 (en) | Silent memory reclamation | |
JP7072103B2 (ja) | ブロックチェーンのスマートコントラクト実現方法、装置、機器及び媒体 | |
CN113032102B (zh) | 资源重调度方法、装置、设备和介质 | |
CN113553216B (zh) | 数据恢复方法、装置、电子设备及存储介质 | |
CN114564281A (zh) | 容器调度方法、装置、设备及存储介质 | |
CN108334333B (zh) | 一种源代码库更新方法及装置 | |
CN116991374B (zh) | 构建持续集成任务的控制方法、装置、电子设备及介质 | |
CN115964176B (zh) | 云计算集群调度方法、电子设备和存储介质 | |
CN103703449A (zh) | 存储器合并的计算机实现方法、系统以及装置 | |
CN112291346B (zh) | 面向异构节点集群的拟态应用部署管理系统、方法及介质 | |
CN115269136A (zh) | 一种异构多核平台分区操作系统安全调度方法及系统 | |
CN113127162B (zh) | 自动化任务执行方法、装置、电子设备及计算机存储介质 | |
CN112667652B (zh) | 基于区块链的模拟交易方法、装置、设备和可读存储介质 | |
CN115686802B (zh) | 云计算集群调度系统 | |
CN106775917B (zh) | 一种虚拟机启动的方法及系统 | |
CN117891744A (zh) | 分布式测试用例的方法及装置 | |
CN107370691B (zh) | 一种资源访问方法和终端 | |
CN115952171A (zh) | 一种基于mysql池化技术复用树形结构的方法 | |
CN117852020A (zh) | 一种对数据库所有进程进行资源隔离的方法 | |
JP2023179057A (ja) | 演算処理装置および演算処理方法 | |
JP2022013618A (ja) | 分散型記憶方法および装置、電子機器、コンピュータ可読媒体およびコンピュータプログラム製品 | |
CN117909065A (zh) | 一种嵌入式容器操作系统的确定性调度方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |