CN111144839B - 一种项目构建方法、持续集成系统及终端设备 - Google Patents
一种项目构建方法、持续集成系统及终端设备 Download PDFInfo
- Publication number
- CN111144839B CN111144839B CN201911301554.4A CN201911301554A CN111144839B CN 111144839 B CN111144839 B CN 111144839B CN 201911301554 A CN201911301554 A CN 201911301554A CN 111144839 B CN111144839 B CN 111144839B
- Authority
- CN
- China
- Prior art keywords
- construction
- script
- constructed
- project
- node
- 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.)
- Active
Links
- 238000010276 construction Methods 0.000 title claims abstract description 370
- 230000010354 integration Effects 0.000 title claims description 37
- 238000013515 script Methods 0.000 claims abstract description 159
- 238000000034 method Methods 0.000 claims abstract description 35
- 238000004590 computer program Methods 0.000 claims description 22
- 230000006870 function Effects 0.000 claims description 19
- 238000012544 monitoring process Methods 0.000 claims description 5
- 238000004458 analytical method Methods 0.000 claims description 4
- 230000008569 process Effects 0.000 description 8
- 230000002085 persistent effect Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000012550 audit Methods 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000003993 interaction 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
- 230000000246 remedial effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/10—Office automation; Time management
- G06Q10/103—Workflow collaboration or project management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
Abstract
本申请适用于软件开发技术领域,提供了一种项目构建方法、项目构建装置、终端设备及计算机可读存储介质,所述方法包括:当所述持续集成系统的构建任务获取到待构建项目的构建请求时,解析所述构建请求,得到所述待构建项目对应的构建脚本的路径参数;根据所述构建脚本的路径参数获取所述构建脚本;在所述构建脚本的指示下,将所述构建脚本发送至目标构建节点;控制所述目标构建节点运行所述构建脚本,以实现对所述待构建项目的构建。通过上述方法,可以使多个软件项目的构建通过一个构建任务完成,大大减少了开发人员的工作量。
Description
技术领域
本申请属于软件开发技术领域,尤其涉及一种项目构建方法、持续集成系统、终端设备及计算机可读存储介质。
背景技术
在现有的持续集成系统(如Jenkins)进行软件项目的构建时,首先需要在持续集成系统上配置构建任务,且每一个软件项目都需要单独配置一个构建任务。
然而,在项目开发过程中,需要构建的软件项目往往存在多个,这就要求开发人员需要频繁地在持续集成系统上为各个软件项目分别配置对应的构建任务,导致开发人员的工作量成倍数的增长。
发明内容
有鉴于此,本申请提供了一种项目构建方法、持续集成系统、终端设备及计算机可读存储介质,可以使多个软件项目的构建通过一个构建任务完成,大大减少了开发人员的工作量。
第一方面,本申请提供了一种项目构建方法,应用于持续集成系统,包括:
当上述持续集成系统的构建任务获取到待构建项目的构建请求时,解析上述构建请求,得到上述待构建项目对应的构建脚本的路径参数;
根据上述构建脚本的路径参数获取上述构建脚本;
在上述构建脚本的指示下,将上述构建脚本发送至目标构建节点;
控制上述目标构建节点运行上述构建脚本,以实现对上述待构建项目的构建。
第二方面,本申请提供了一种持续集成系统,包括:
脚本路径解析单元,用于当上述持续集成系统的构建任务获取到待构建项目的构建请求时,解析上述构建请求,得到上述待构建项目对应的构建脚本的路径参数;
脚本获取单元,用于根据上述构建脚本的路径参数获取上述构建脚本;
脚本发送单元,用于在上述构建脚本的指示下,将上述构建脚本发送至目标构建节点;
构建控制单元,用于控制上述目标构建节点运行上述构建脚本,以实现对上述待构建项目的构建。
第三方面,本申请提供了一种终端设备,包括存储器、处理器以及存储在上述存储器中并可在上述处理器上运行的计算机程序,上述处理器执行上述计算机程序时实现如上述第一方面所提供的方法。
第四方面,本申请提供了一种计算机可读存储介质,上述计算机可读存储介质存储有计算机程序,上述计算机程序被处理器执行时实现如第一方面所提供的方法。
第五方面,本申请提供了一种计算机程序产品,当计算机程序产品在终端设备上运行时,使得终端设备执行上述第一方面所提供的方法。
由上可见,本申请方案中当上述持续集成系统的构建任务获取到待构建项目的构建请求时,解析上述构建请求,得到上述待构建项目对应的构建脚本的路径参数;根据上述构建脚本的路径参数获取上述构建脚本;在上述构建脚本的指示下,将上述构建脚本发送至目标构建节点;控制上述目标构建节点运行上述构建脚本,以实现对上述待构建项目的构建。通过本申请方案,可以使多个软件项目的构建通过一个构建任务完成,大大减少了开发人员的工作量。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的项目构建方法的流程示意图;
图2是本申请实施例提供的持续集成系统的结构示意图;
图3是本申请实施例提供的终端设备的结构示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
应当理解,当在本申请说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本申请说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
另外,在本申请说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
在本申请说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
图1示出了本申请实施例提供的一种项目构建方法的流程图,详述如下:
步骤101,当上述持续集成系统的构建任务获取到待构建项目的构建请求时,解析上述构建请求,得到上述待构建项目对应的构建脚本的路径参数;
在本申请实施例中,上述持续集成系统用于对软件项目进行持续集成,持续集成是一种软件开发实践,开发团队中的开发人员频繁地集成他们的工作。每次集成都通过自动化的构建(包括编译、发布、自动化测试)来验证,从而尽早地发现集成错误。上述持续集成系统可以是Jenkins、Buildbot、TeamCity等,此处不作限定。上述构建任务由开发人员根据需求在上述持续集成系统上创建。以上述持续集成系统是Jenkins为例,上述构建任务可以是流水线任务或多分支流水线任务,上述构建任务配置有对应的持续集成脚本,当Jenkins的构建任务获取到待构建项目的构建请求时,即开始运行上述持续集成脚本,以执行本申请实施例中的项目构建方法的步骤。上述待构建项目为上述构建请求中指示的项目。持续集成系统运行上述持续集成脚本,对上述构建请求进行解析。通过对上述构建请求的解析,上述持续集成系统得到该构建脚本的路径参数,该路径参数指示了上述构建脚本的存储位置。需要说明的是,上述构建任务可以持续接收不同待构建项目的构建请求,并且每个待构建项目对应一个构建脚本。
可选地,上述步骤101具体包括:
A1、解析上述构建请求,得到上述待构建项目的路径参数;
A2、基于上述待构建项目的路径参数和预设的相对路径得到上述待构建项目对应的构建脚本的路径参数。
其中,上述相对路径为上述构建脚本相对于上述待构建项目的路径。上述构建脚本位于上述待构建项目的固定目录下,由开发人员进行维护。也即是说,不同待构建项目的构建脚本存储在各自对应的待构建项目的相同目录下。解析上述构建请求,可以得到上述待构建项目的路径参数。上述待构建项目的路径参数指示了上述待构建项目(文件)的存储位置,然后结合上述待构建项目的路径参数(根路径)和上述预设的相对路径,即可得到上述待构建项目对应的构建脚本的路径参数(绝对路径)。
可选地,上述步骤101之前还包括:
B1、监听版本控制系统的钩子函数的调用;
B2、当监听到上述钩子函数被调用时,通过预设的参数插件捕捉上述钩子函数的钩子参数;
B3、基于上述钩子参数生成待构建项目的构建请求。
其中,上述版本控制系统用于存储上述待构建项目的代码,上述版本控制系统可以为github、gitlab、gerrit中的一种,此处不作限定。当上述版本控制系统中发生了相应的事件时,即会触发上述钩子函数(webhook)的调用,上述事件包括代码审核事件、代码推送事件、标签推送事件、合并事件及编译事件等,此处不作限定。上述持续集成系统通过任务触发器(如gerrit触发器或gitlab触发器等)监听上述钩子函数的调用。当监听到上述钩子函数被调用时,通过预设的参数插件捕捉上述钩子函数的钩子参数。上述钩子参数中包含有待构建项目的项目仓库的名称,基于上述钩子参数,即可生成该待构建项目的构建请求。
可选地,上述步骤101之前还包括:
C1、接收上述持续集成系统对构建任务的创建指令;
C2、获取上述构建任务的配置信息;
C3、根据上述创建指令,基于上述配置信息创建上述构建任务。
其中,上述创建指令由开发人员通过持续集成系统的主页面发出。在接收到上述创建指令后,上述持续集成系统开始获取上述开发人员输入的上述构建任务的配置信息。在上述创建指令的控制下,基于上述配置信息中的内容创建上述构建任务。需要说明的是,在持续集成系统的运行过程中,可只进行一次构建任务的创建操作,得到唯一的一个构建任务,该唯一的一个构建任务即可持续接收不同的待构建项目的构建请求,实现对多个待构建项目的构建操作。
步骤102,根据上述构建脚本的路径参数获取上述构建脚本;
在本申请实施例中,上述构建脚本的路径参数指示了上述构建脚本的存储位置,上述持续集成系统从该存储位置上获取上述构建脚本。
可选地,上述步骤102具体包括:
D1、根据上述构建脚本的路径参数确定版本控制系统的目标项目仓库;
D2、从上述目标项目仓库中获取上述构建脚本。
具体地,上述构建脚本的路径参数包括有上述目标项目仓库的名称,根据该名称从上述版本控制系统中查找到上述目标项目仓库。上述目标项目仓库中存储有上述构建脚本,从上述目标项目仓库中获取上述构建脚本。
可选地,上述步骤D1具体包括:
E1、根据上述构建脚本的路径参数查找版本控制系统上对应的项目仓库;
E2、若上述项目仓库不存在,则输出警告信息;
E3、若上述项目仓库存在,则将上述项目仓库确定为目标项目仓库。
具体地,上述构建脚本的路径参数指示了版本控制系统上对应的项目仓库,根据该路径参数,在上述版本控制系统上查找该项目仓库。如果该项目仓库存在,则说明上述待构建项目存在对应的构建脚本,将该项目仓库确定为目标项目仓库。如果该项目仓库不存在,则说明上述待构建项目不存在对应的构建脚本,向开发人员输出警告信息,如输出“构建脚本不存在”字样。开发人员根据警告信息,可以采取补救措施,如开发人员将构建脚本编写好之后将该构建脚本存储在对应的目标仓库中,再重新对待构建项目进行构建。
步骤103,在上述构建脚本的指示下,将上述构建脚本发送至目标构建节点;
在本申请实施例中,构建节点包括一个主节点和多个从节点,主节点和各个从节点均为服务器。主节点上安装有上述持续集成系统的服务端,从而对各个从节点进行调度,以控制指定的从节点对待构建项目进行构建。上述构建脚本中指定有对应的构建节点,上述持续集成系统从上述构建脚本中读取到上述构建节点作为目标构建节点,然后将上述构建脚本发送给上述目标构建节点。需要说明的是,不同的待构建项目的构建需要在不同的构建环境下进行,在每一个构建节点上,预设有各自的构建环境。构建脚本中的目标构建节点由开发人员指定,需保证目标构建节点的构建环境与待构建项目的构建所需的构建环境匹配。其中,上述构建环境指的是编译环境。例如,待构建项目为安卓应用程序项目,则需要在能够编译安卓应用程序的系统上编译,相应地,开发人员在该待构建项目对应的构建脚本中指定的目标构建节点则应该为安装有安卓系统的构建节点。
作为一种可能的实现方式,同一个构建项目可能需要在不同的构建环境下进行构建,比如一个QQ客户端项目,需要分别编译为windows、mac以及linux平台应用,则可以在构建脚本中定义多种构建指令,每种构建指令对应有各自的构建节点。运行该构建脚本,以实现在不同的构建节点上同时对待构建项目进行构建。
步骤104,控制上述目标构建节点运行上述构建脚本,以实现对上述待构建项目的构建。
在本申请实施例中,主节点控制上述目标构建节点运行上述构建脚本。上述目标构建节点根据上述构建脚本中的构建指令,从版本控制系统中拉取上述待构建项目的代码,并开始对上述待构建项目进行构建。上述构建指令可以是代码审核指令,用于对代码进行审核;也可以是自动测试指令,用于对代码进行测试。
可选地,上述步骤104之后还包括:
获取上述待构建项目的构建日志;
提取上述构建日志中的构建结果;
若上述构建结果为构建成功,则输出提醒信息;
若上述构建结果为构建失败,则从上述构建脚本中获取备份构建节点;
控制上述备份构建节点运行上述构建脚本,以实现对上述待构建项目的构建。
其中,上述构建结果包括构建成功和构建失败。在上述待构建项目的构建完成后,由上述持续集成系统生成上述构建日志。上述构建日志中包括有上述待构建项目的构建结果。如果检测到该构建结果为构建成功,则输出一个提醒信息通知开发人员本次构建成功。如果检测到该构建结果为构建失败,则从上述构建脚本中获取备份构建节点,并控制上述备份构建节点运行上述构建脚本,以实现对上述待构建项目的构建。上述备份构建节点由开发人员在编写上述构建脚本时指定,上述备份构建节点可以与上述目标构建节点为同一构建节点,也可以与上述目标构建节点为不同的构建节点。
由上可见,本申请方案中当上述持续集成系统的构建任务获取到待构建项目的构建请求时,解析上述构建请求,得到上述待构建项目对应的构建脚本的路径参数;根据上述构建脚本的路径参数获取上述构建脚本;在上述构建脚本的指示下,将上述构建脚本发送至目标构建节点;控制上述目标构建节点运行上述构建脚本,以实现对上述待构建项目的构建。通过本申请方案,可以使多个软件项目的构建通过一个构建任务完成,大大减少了开发人员的工作量。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
图2示出了本申请实施例提供的一种持续集成系统的结构示意图,为了便于说明,仅示出了与本申请实施例相关的部分。
该持续集成系统200包括:
脚本路径解析单元201,用于当上述持续集成系统的构建任务获取到待构建项目的构建请求时,解析上述构建请求,得到上述待构建项目对应的构建脚本的路径参数;
脚本获取单元202,用于根据上述构建脚本的路径参数获取上述构建脚本;
脚本发送单元203,用于在上述构建脚本的指示下,将上述构建脚本发送至目标构建节点;
构建控制单元204,用于控制上述目标构建节点运行上述构建脚本,以实现对上述待构建项目的构建。
可选地,上述脚本路径解析单元201还包括:
项目路径解析子单元,用于解析上述构建请求,得到上述待构建项目的路径参数;
相对路径解析子单元,用于基于上述待构建项目的路径参数和预设的相对路径得到上述待构建项目对应的构建脚本的路径参数,其中,上述相对路径为上述构建脚本相对于上述待构建项目的路径。
可选地,上述脚本获取单元202还包括:
目标仓库确定子单元,用于根据上述构建脚本的路径参数确定版本控制系统的目标项目仓库;
目标仓库获取子单元,用于从上述目标项目仓库中获取上述构建脚本。
可选地,上述目标仓库确定子单元还包括:
对应仓库查找子单元,用于根据上述构建脚本的路径参数查找版本控制系统上对应的项目仓库;
警告输出子单元,用于若上述项目仓库不存在,则输出警告信息;
最终确定子单元,用于若上述项目仓库存在,则将上述项目仓库确定为目标项目仓库。
可选地,上述持续集成系统200还包括:
钩子监听单元,用于监听版本控制系统的钩子函数的调用;
参数捕捉单元,用于当监听到上述钩子函数被调用时,通过预设的参数插件捕捉上述钩子函数的钩子参数;
请求生成单元,用于基于上述钩子参数生成待构建项目的构建请求。
可选地,上述持续集成系统200还包括:
日志获取单元,用于获取上述待构建项目的构建日志;
结果提取单元,用于提取上述构建日志中的构建结果,其中,上述构建结果包括构建成功和构建失败;
提醒单元,用于若上述构建结果为构建成功,则输出提醒信息;
备份节点获取单元,用于若上述构建结果为构建失败,则从上述构建脚本中获取备份构建节点;
备份节点控制单元,用于控制上述备份构建节点运行上述构建脚本,以实现对上述待构建项目的构建。
可选地,上述持续集成系统200还包括:
创建指令接收单元,用于接收上述持续集成系统对构建任务的创建指令;
配置信息获取单元,用于获取上述构建任务的配置信息;
任务创建单元,用于根据上述创建指令,基于上述配置信息创建上述构建任务。
由上可见,本申请方案中当上述持续集成系统的构建任务获取到待构建项目的构建请求时,解析上述构建请求,得到上述待构建项目对应的构建脚本的路径参数;根据上述构建脚本的路径参数获取上述构建脚本;在上述构建脚本的指示下,将上述构建脚本发送至目标构建节点;控制上述目标构建节点运行上述构建脚本,以实现对上述待构建项目的构建。通过本申请方案,可以使多个软件项目的构建通过一个构建任务完成,大大减少了开发人员的工作量。
图3为本申请一实施例提供的终端设备的结构示意图。如图3所示,该实施例的终端设备3包括:至少一个处理器30(图3中仅示出一个)、存储器31以及存储在上述存储器31中并可在上述至少一个处理器30上运行的计算机程序32,上述处理器30执行上述计算机程序32时实现以下步骤:
当上述持续集成系统的构建任务获取到待构建项目的构建请求时,解析上述构建请求,得到上述待构建项目对应的构建脚本的路径参数;
根据上述构建脚本的路径参数获取上述构建脚本;
在上述构建脚本的指示下,将上述构建脚本发送至目标构建节点;
控制上述目标构建节点运行上述构建脚本,以实现对上述待构建项目的构建。
假设上述为第一种可能的实施方式,则在第一种可能的实施方式作为基础而提供的第二种可能的实施方式中,上述解析上述构建请求,得到上述待构建项目对应的构建脚本的路径参数,包括:
解析上述构建请求,得到上述待构建项目的路径参数;
基于上述待构建项目的路径参数和预设的相对路径得到上述待构建项目对应的构建脚本的路径参数,其中,上述相对路径为上述构建脚本相对于上述待构建项目的路径。
在上述第一种可能的实施方式作为基础而提供的第三种可能的实施方式中,上述根据上述构建脚本的路径参数获取上述构建脚本,包括:
根据上述构建脚本的路径参数确定版本控制系统的目标项目仓库;
从上述目标项目仓库中获取上述构建脚本。
在上述第三种可能的实施方式作为基础而提供的第四种可能的实施方式中,上述根据上述构建脚本的路径参数确定版本控制系统的目标项目仓库,包括:
根据上述构建脚本的路径参数查找版本控制系统上对应的项目仓库;
若上述项目仓库不存在,则输出警告信息;
若上述项目仓库存在,则将上述项目仓库确定为目标项目仓库。
在上述第一种可能的实施方式作为基础而提供的第五种可能的实施方式中,上述项目构建方法还包括:
监听版本控制系统的钩子函数的调用;
当监听到上述钩子函数被调用时,通过预设的参数插件捕捉上述钩子函数的钩子参数;
基于上述钩子参数生成待构建项目的构建请求。
在上述第一种可能的实施方式作为基础,或者上述第二种可能的实施方式作为基础,或者上述第三种可能的实施方式作为基础,或者上述第四种可能的实施方式作为基础,或者上述第五种可能的实施方式作为基础而提供的第六种可能的实施方式中,上述控制上述目标构建节点运行上述构建脚本之后,还包括:
获取上述待构建项目的构建日志;
提取上述构建日志中的构建结果,其中,上述构建结果包括构建成功和构建失败;
若上述构建结果为构建成功,则输出提醒信息;
若上述构建结果为构建失败,则从上述构建脚本中获取备份构建节点;
控制上述备份构建节点运行上述构建脚本,以实现对上述待构建项目的构建。
在上述第一种可能的实施方式作为基础,或者上述第二种可能的实施方式作为基础,或者上述第三种可能的实施方式作为基础,或者上述第四种可能的实施方式作为基础,或者上述第五种可能的实施方式作为基础而提供的第七种可能的实施方式中,在上述当上述持续集成系统的构建任务获取到待构建项目的构建请求时,解析上述构建请求,得到上述待构建项目对应的构建脚本的路径参数之前,包括:
接收上述持续集成系统对构建任务的创建指令;
获取上述构建任务的配置信息;
根据上述创建指令,基于上述配置信息创建上述构建任务。
本领域技术人员可以理解,图3仅仅是终端设备3的举例,并不构成对终端设备3的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如还可以包括输入输出设备、网络接入设备等。
所称处理器30可以是中央处理单元(Central Processing Unit,CPU),该处理器30还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
上述存储器31在一些实施例中可以是上述终端设备3的内部存储单元,例如终端设备3的硬盘或内存。上述存储器31在另一些实施例中也可以是上述终端设备3的外部存储设备,例如上述终端设备3上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,上述存储器31还可以既包括上述终端设备3的内部存储单元也包括外部存储设备。上述存储器31用于存储操作系统、应用程序、引导装载程序(BootLoader)、数据以及其他程序等,例如上述计算机程序的程序代码等。上述存储器31还可以用于暂时地存储已经输出或者将要输出的数据。
由上可见,本申请方案中当上述持续集成系统的构建任务获取到待构建项目的构建请求时,解析上述构建请求,得到上述待构建项目对应的构建脚本的路径参数;根据上述构建脚本的路径参数获取上述构建脚本;在上述构建脚本的指示下,将上述构建脚本发送至目标构建节点;控制上述目标构建节点运行上述构建脚本,以实现对上述待构建项目的构建。通过本申请方案,可以使多个软件项目的构建通过一个构建任务完成,大大减少了开发人员的工作量。
需要说明的是,上述装置/单元之间的信息交互、执行过程等内容,由于与本申请方法实施例基于同一构思,其具体功能及带来的技术效果,具体可参见方法实施例部分,此处不再赘述。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将上述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本申请实施例还提供了一种计算机可读存储介质,上述计算机可读存储介质存储有计算机程序,上述计算机程序被处理器执行时实现可实现上述各个方法实施例中的步骤。
本申请实施例提供了一种计算机程序产品,当计算机程序产品在终端设备上运行时,使得终端设备执行时实现可实现上述各个方法实施例中的步骤。
上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,上述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,上述计算机程序包括计算机程序代码,上述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。上述计算机可读介质至少可以包括:能够将计算机程序代码携带到终端设备的任何实体或装置、记录介质、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质。例如U盘、移动硬盘、磁碟或者光盘等。在某些司法管辖区,根据立法和专利实践,计算机可读介质不可以是电载波信号和电信信号。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的实施例中,应该理解到,所揭露的装置/网络设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/网络设备实施例仅仅是示意性的,例如,上述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
以上上述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。
Claims (10)
1.一种项目构建方法,其特征在于,应用于持续集成系统,包括:
当所述持续集成系统的构建任务获取到待构建项目的构建请求时,解析所述构建请求,得到所述待构建项目对应的构建脚本的路径参数;
根据所述构建脚本的路径参数获取所述构建脚本;
在所述构建脚本的指示下,将所述构建脚本发送至目标构建节点;其中,构建节点包括一个主节点和多个从节点,所述主节点上安装有所述持续集成系统的服务端,从而对各个所述从节点进行调度,以控制指定的从节点对所述待构建项目进行构建,所述构建脚本中指定有对应的构建节点,所述持续集成系统从所述构建脚本中读取到所述构建节点作为目标构建节点,在每一个构建节点上,预设有各自的构建环境;
控制所述目标构建节点运行所述构建脚本,以实现对所述待构建项目的构建。
2.根据权利要求1所述的项目构建方法,其特征在于,所述解析所述构建请求,得到所述待构建项目对应的构建脚本的路径参数,包括:
解析所述构建请求,得到所述待构建项目的路径参数;
基于所述待构建项目的路径参数和预设的相对路径得到所述待构建项目对应的构建脚本的路径参数,其中,所述相对路径为所述构建脚本相对于所述待构建项目的路径。
3.根据权利要求1所述的项目构建方法,其特征在于,所述根据所述构建脚本的路径参数获取所述构建脚本,包括:
根据所述构建脚本的路径参数确定版本控制系统的目标项目仓库;
从所述目标项目仓库中获取所述构建脚本。
4.根据权利要求3所述的项目构建方法,其特征在于,所述根据所述构建脚本的路径参数确定版本控制系统的目标项目仓库,包括:
根据所述构建脚本的路径参数查找版本控制系统上对应的项目仓库;
若所述项目仓库不存在,则输出警告信息;
若所述项目仓库存在,则将所述项目仓库确定为目标项目仓库。
5.根据权利要求1所述的项目构建方法,其特征在于,所述项目构建方法还包括:
监听版本控制系统的钩子函数的调用;
当监听到所述钩子函数被调用时,通过预设的参数插件捕捉所述钩子函数的钩子参数;
基于所述钩子参数生成待构建项目的构建请求。
6.根据权利要求1-5任意一项所述的项目构建方法,其特征在于,所述控制所述目标构建节点运行所述构建脚本之后,还包括:
获取所述待构建项目的构建日志;
提取所述构建日志中的构建结果,其中,所述构建结果包括构建成功和构建失败;
若所述构建结果为构建成功,则输出提醒信息;
若所述构建结果为构建失败,则从所述构建脚本中获取备份构建节点;
控制所述备份构建节点运行所述构建脚本,以实现对所述待构建项目的构建。
7.根据权利要求1-5任意一项所述的项目构建方法,其特征在于,在所述当所述持续集成系统的构建任务获取到待构建项目的构建请求时,解析所述构建请求,得到所述待构建项目对应的构建脚本的路径参数之前,包括:
接收所述持续集成系统对构建任务的创建指令;
获取所述构建任务的配置信息;
根据所述创建指令,基于所述配置信息创建所述构建任务。
8.一种持续集成系统,其特征在于,包括:
脚本路径解析单元,用于当所述持续集成系统的构建任务获取到待构建项目的构建请求时,解析所述构建请求,得到所述待构建项目对应的构建脚本的路径参数;
脚本获取单元,用于根据所述构建脚本的路径参数获取所述构建脚本;
脚本发送单元,用于在所述构建脚本的指示下,将所述构建脚本发送至目标构建节点;其中,构建节点包括一个主节点和多个从节点,所述主节点上安装有所述持续集成系统的服务端,从而对各个所述从节点进行调度,以控制指定的从节点对所述待构建项目进行构建,所述构建脚本中指定有对应的构建节点,所述持续集成系统从所述构建脚本中读取到所述构建节点作为目标构建节点,在每一个构建节点上,预设有各自的构建环境;
构建控制单元,用于控制所述目标构建节点运行所述构建脚本,以实现对所述待构建项目的构建。
9.一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7任一项所述的方法。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911301554.4A CN111144839B (zh) | 2019-12-17 | 2019-12-17 | 一种项目构建方法、持续集成系统及终端设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911301554.4A CN111144839B (zh) | 2019-12-17 | 2019-12-17 | 一种项目构建方法、持续集成系统及终端设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111144839A CN111144839A (zh) | 2020-05-12 |
CN111144839B true CN111144839B (zh) | 2024-02-02 |
Family
ID=70518584
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911301554.4A Active CN111144839B (zh) | 2019-12-17 | 2019-12-17 | 一种项目构建方法、持续集成系统及终端设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111144839B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112115046B (zh) * | 2020-08-25 | 2023-12-29 | 深圳市优必选科技股份有限公司 | 一种软件故障定位方法、装置及终端 |
CN112181386B (zh) * | 2020-08-31 | 2023-12-01 | 深圳市优必选科技股份有限公司 | 一种基于软件持续集成的代码构建方法、装置及终端 |
CN112181478A (zh) * | 2020-09-15 | 2021-01-05 | 中信银行股份有限公司 | 一种构建结果获取方法、装置及存储介质 |
CN112286580B (zh) * | 2020-10-31 | 2023-08-04 | 成都新潮传媒集团有限公司 | 一种用于处理流水线作业的方法、装置及计算机设备 |
CN112947990B (zh) * | 2021-03-23 | 2023-04-07 | 四川虹美智能科技有限公司 | 开发库创建方法、装置及计算机可读介质 |
CN113342779A (zh) * | 2021-06-23 | 2021-09-03 | 深圳兆日科技股份有限公司 | 项目更新方法、装置及计算机可读存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107608710A (zh) * | 2017-08-31 | 2018-01-19 | 华为技术有限公司 | 基于Jenkins工具的软件项目构建任务配置方法及装置 |
CN108090168A (zh) * | 2017-12-14 | 2018-05-29 | 厦门市美亚柏科信息股份有限公司 | 一种通用f2fs文件系统解析方法、终端设备及存储介质 |
CN108536519A (zh) * | 2018-03-30 | 2018-09-14 | 平安科技(深圳)有限公司 | 自动搭建Kubernetes主节点的方法及终端设备 |
CN108614699A (zh) * | 2016-12-20 | 2018-10-02 | 航天信息股份有限公司 | 一种在windows系统上持续集成Android项目的方法和系统 |
CN108874498A (zh) * | 2017-05-09 | 2018-11-23 | 上海秦苍信息科技有限公司 | 一种集中式的定时任务管理方法 |
CN109634612A (zh) * | 2018-12-04 | 2019-04-16 | 浙江数链科技有限公司 | 持续集成方法、系统、计算机设备和存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8533676B2 (en) * | 2011-12-29 | 2013-09-10 | Unisys Corporation | Single development test environment |
CN110096424B (zh) * | 2019-05-14 | 2023-08-22 | 北京字节跳动网络技术有限公司 | 测试的处理方法、装置、电子设备及存储介质 |
-
2019
- 2019-12-17 CN CN201911301554.4A patent/CN111144839B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108614699A (zh) * | 2016-12-20 | 2018-10-02 | 航天信息股份有限公司 | 一种在windows系统上持续集成Android项目的方法和系统 |
CN108874498A (zh) * | 2017-05-09 | 2018-11-23 | 上海秦苍信息科技有限公司 | 一种集中式的定时任务管理方法 |
CN107608710A (zh) * | 2017-08-31 | 2018-01-19 | 华为技术有限公司 | 基于Jenkins工具的软件项目构建任务配置方法及装置 |
CN108090168A (zh) * | 2017-12-14 | 2018-05-29 | 厦门市美亚柏科信息股份有限公司 | 一种通用f2fs文件系统解析方法、终端设备及存储介质 |
CN108536519A (zh) * | 2018-03-30 | 2018-09-14 | 平安科技(深圳)有限公司 | 自动搭建Kubernetes主节点的方法及终端设备 |
CN109634612A (zh) * | 2018-12-04 | 2019-04-16 | 浙江数链科技有限公司 | 持续集成方法、系统、计算机设备和存储介质 |
Non-Patent Citations (1)
Title |
---|
基于Jenkins的持续集成系统的设计与实现;黄创杰;《中国优秀硕士论文全文数据库信息科技辑(月刊)》(第01期);I138-1388 * |
Also Published As
Publication number | Publication date |
---|---|
CN111144839A (zh) | 2020-05-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111144839B (zh) | 一种项目构建方法、持续集成系统及终端设备 | |
CN111967017B (zh) | 生成依赖关系的方法、装置、终端设备及存储介质 | |
CN110941528B (zh) | 一种基于故障的日志埋点设置方法、装置及系统 | |
CN112486629B (zh) | 微服务状态检测方法、装置、电子设备和存储介质 | |
US10606586B2 (en) | Application architecture generation | |
CN112068874B (zh) | 软件项目持续集成方法、装置、终端设备和存储介质 | |
CN110737437A (zh) | 一种基于代码集成的编译方法和装置 | |
CN113448854A (zh) | 一种回归测试方法和装置 | |
CN111367531B (zh) | 代码处理方法及装置 | |
CN111651352B (zh) | 一种仓库代码的合并方法及装置 | |
CN111884876A (zh) | 一种网络协议的协议类型检测方法、装置、设备及介质 | |
CN112527459A (zh) | 一种基于Kubernetes集群的日志分析方法及装置 | |
CN116599881A (zh) | 云平台租户建模测试的方法、装置、设备及存储介质 | |
CN110737438A (zh) | 一种数据处理方法和装置 | |
CN114564286B (zh) | 一种规则引擎告警方法及规则引擎告警系统 | |
CN106855888B (zh) | 基于Logstash分布式系统的日志监控系统 | |
US20150007139A1 (en) | Optimizing error parsing in an integrated development environment | |
CN114168108A (zh) | 代码合并方法、装置、电子设备和计算机可读存储介质 | |
CN112558982A (zh) | 代码检测方法、装置及计算机设备 | |
CN110704483A (zh) | 用户路由流程定位方法、设备、存储介质及装置 | |
CN112115046B (zh) | 一种软件故障定位方法、装置及终端 | |
CN110737429A (zh) | 一种利用Makefile自身的依赖关系的模块化编译方法和装置 | |
CN112269583B (zh) | 设备运行异常文件升级处理方法、服务器和存储介质 | |
CN117827680A (zh) | 一种接口测试的方法、装置及服务器 | |
CN114780097A (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 |