软件部署方法、装置、设备及存储介质与流程

文档序号:26303902发布日期:2021-08-17 13:46阅读:81来源:国知局
软件部署方法、装置、设备及存储介质与流程

本发明涉及研发管理领域,尤其涉及一种软件部署方法、装置、设备及存储介质。



背景技术:

科技的高速发展催生了各种各样的软件应用程序,其中,软件应用程序离不开软件的构建和部署,此时需要使用如jenkins等构建工具对开发人员编写的软件源代码进行构建及部署。

但是,随着各类应用软件日益增长的构建数量的增长和各类定制化需求的增加,已经无法满足日常的构建和部署的需求。目前,现有技术中的软件部署方法在需要同时进行多个任务的处理时自动性差,效率较低。



技术实现要素:

本发明的主要目的在于解决现有技术中的软件部署方法在需要同时进行多个任务的处理时自动性差,效率较低的技术问题。

本发明第一方面提供了一种软件部署方法,包括:在接收到软件批量构建请求时,提取所述软件批量构建请求中的所有构建子任务信息以及用于执行构建子任务实现软件构建的目标构建机房,其中所述目标构建机房包括至少一个编译机;根据所述构建子任务信息确定对应的目标编译机的标识信息,并基于所述标识信息从所述目标构建机房中筛选出对应的目标编译机,得到执行所有所述构建子任务的编译机集群和其对应的编译机编码;根据所述目标编译机编码,调用对应的目标编译机集群执行对应的构建子任务,生成对应的第二产品包;在所有构建子任务全部执行成功后,将软件批量构建任务标记为执行成功,将所有所述第二产品包生成第一产品包,并基于所述第一产品包进行软件的部署

可选的,在本发明第一方面的第一种实现方式中,所述根据所述构建子任务信息确定对应的目标编译机的标识信息,并基于所述标识信息从所述目标构建机房中筛选出对应的目标编译机,得到执行所有所述构建子任务的编译机集群和其对应的编译机编码包括:获取所述目标构建机房中各编译机的状态信息,其中,所述状态信息包括可用和不可用;获取所述状态信息为可用的编译机编码,得到可用编译机集群;根据所述构建子任务信息确定对应的目标编译机的标识信息,根据所述标识信息在可用编译机集群中筛选出对应的目标编译机,得到执行所有所述构建子任务的编译机集群和其对应的编译机编码。

可选的,在本发明第一方面的第二种实现方式中,在所述获取所述目标构建机房中各编译机的状态信息之前,还包括:每隔预设的定时时间查询所述目标构建机房的机房数据库中的编译机心跳数据;判断各所述编译机的编译机心跳数据是否正常;将所述编译机心跳数据正常的编译机的状态信息标记为可用,将所述编译机心跳数据为异常的编译机的状态信息标记为不可用。

可选的,在本发明第一方面的第三种实现方式中,所述标识信息中包括编译机类型、编译环境和编译类型,所述根据所述构建子任务信息确定对应的目标编译机的标识信息,根据所述标识信息在可用编译机集群中筛选出对应的目标编译机,得到执行所有所述构建子任务的编译机集群和其对应的编译机编码包括:根据所述编译机类型、编译环境和编译类型,在所述可用编译机集群中筛选出对应的目标编译机,得到各所述构建子任务对应的预选编译机,其中,所述预选编译机的数量为至少一个;获取各所述预选编译机中正在运行任务数,选择所述正在运行任务数最少的预选编译机作为目标编译机,得到执行所有所述构建子任务的编译机集群和其对应的编译机编码。

可选的,在本发明第一方面的第四种实现方式中,所述根据所述目标编译机编码,调用对应的目标编译机集群执行对应的构建子任务,生成对应的第二产品包包括:根据所述目标编译机编码调用所述目标编译机作为执行编译机,并获取各所述执行编译机所在的目标构建机房的镜像代码库中包含的代码信息;创建工作空间目录,根据所述代码信息调用各所述执行编译机中预置的构建脚本进行软件构建,并将所述构建子任务标记为执行中,同时更新各所述执行编译机的正在运行任务数;在所述构建子任务构建成功后,更新所述执行编译机的正在运行任务数,同时得到所述构建子任务对应的第二产品包。

可选的,在本发明第一方面的第五种实现方式中,所述根据所述代码信息调用各所述执行编译机中预置的构建脚本进行软件构建包括:获取所述构建子任务中的任务依赖情况;根据所述任务依赖情况计算出任务依赖结果,并根据各所述任务依赖结果得到构建任务执行顺序;根据所述代码信息调用各所述执行编译机中预置的构建脚本基于所述构建任务执行顺序执行所述构建子任务。

可选的,在本发明第一方面的第六种实现方式中,在所述根据所述目标编译机编码,调用对应的目标编译机集群执行对应的构建子任务,生成对应的第二产品包之后,还包括:根据所述构建子任务的任务执行情况生成任务执行记录,其中,所述任务执行情况包括各所述执行编译机的任务执行时间和任务执行结果;获取各所述任务执行记录,根据各所述任务执行记录生成软件构建日志。

本发明第二方面提供了一种软件部署装置,包括:任务分配模块,用于在接收到软件批量构建请求时,提取所述软件批量构建请求中的所有构建子任务信息以及用于执行构建子任务实现软件构建的目标构建机房,其中所述目标构建机房包括至少一个编译机;编译机筛选模块,用于根据所述构建子任务信息确定对应的目标编译机的标识信息,并基于所述标识信息从所述目标构建机房中筛选出对应的目标编译机,得到执行所有所述构建子任务的编译机集群和其对应的编译机编码;执行模块,用于根据所述目标编译机编码,调用对应的目标编译机集群执行对应的构建子任务,生成对应的第二产品包;构建部署模块,用于在所有构建子任务全部执行成功后,将软件批量构建任务标记为执行成功,将所有所述第二产品包生成第一产品包,并基于所述第一产品包进行软件的部署。

可选的,在本发明第二方面的第一种实现方式中,所述编译机筛选模块包括:使用状态查询单元,用于获取所述目标构建机房中各编译机的状态信息,其中,所述状态信息包括可用和不可用;可用编译机筛选单元,用于获取所述状态信息为可用的编译机编码,得到可用编译机集群;编码筛选单元,用于根据所述构建子任务信息确定对应的目标编译机的标识信息,根据所述标识信息在可用编译机集群中筛选出对应的目标编译机,得到执行所有所述构建子任务的编译机集群和其对应的编译机编码。

可选的,在本发明第二方面的第二种实现方式中,所述软件部署装置还包括状态信息获取模块,所述状态信息获取模块具体包括:心跳数据获取单元,用于每隔预设的定时时间查询所述目标构建机房的机房数据库中的编译机心跳数据;心跳数据判断单元,用于判断各所述编译机的编译机心跳数据是否正常;状态标记单元,用于将所述编译机心跳数据正常的编译机的状态信息标记为可用,将所述编译机心跳数据为异常的编译机的状态信息标记为不可用。

可选的,在本发明第二方面的第三种实现方式中,所述标识信息中包括编译机类型、编译环境和编译类型,所述编码筛选单元包括:编译机预选子单元,用于根据所述编译机类型、编译环境和编译类型,在所述可用编译机集群中筛选出对应的目标编译机,得到各所述构建子任务对应的预选编译机,其中,所述预选编译机的数量为至少一个;编译机编码获取子单元,用于获取各所述预选编译机中正在运行任务数,选择所述正在运行任务数最少的预选编译机作为目标编译机,得到执行所有所述构建子任务的编译机集群和其对应的编译机编码。

可选的,在本发明第二方面的第四种实现方式中,所述执行模块包括:代码提取单元,用于根据所述目标编译机编码调用所述目标编译机作为执行编译机,并获取各所述执行编译机所在的目标构建机房的镜像代码库中包含的代码信息;第一构建执行单元,用于创建工作空间目录,根据所述代码信息调用各所述执行编译机中预置的构建脚本进行软件构建,并将所述构建子任务标记为执行中,同时更新各所述执行编译机的正在运行任务数;第二构建执行单元,用于在所述构建子任务构建成功后,更新所述执行编译机的正在运行任务数,同时得到所述构建子任务对应的第二产品包。

可选的,在本发明第二方面的第五种实现方式中,所述第一构建执行单元包括:依赖情况获取子单元,用于获取所述构建子任务中的任务依赖情况;

执行顺序计算子单元,用于根据所述任务依赖情况计算出任务依赖结果,并根据各所述任务依赖结果得到构建任务执行顺序;执行子单元,用于根据所述代码信息调用各所述执行编译机中预置的构建脚本基于所述构建任务执行顺序执行所述构建子任务。

可选的,在本发明第二方面的第六种实现方式中,所述软件部署装置还包括构建日志生成模块,所述构建日志生成模块具体包括:任务记录获取单元,用于根据所述构建子任务的任务执行情况生成任务执行记录,其中,所述任务执行情况包括各所述执行编译机的任务执行时间和任务执行结果;日志生成单元,用于获取各所述任务执行记录,根据各所述任务执行记录生成软件构建日志。

本发明第三方面提供了一种软件部署设备,包括:存储器和至少一个处理器,所述存储器中存储有指令;所述至少一个处理器调用所述存储器中的所述指令,以使得所述软件部署设备执行上述的软件部署方法的步骤。

本发明的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述的软件部署方法的步骤。

本发明提供的技术方案中,接收到软件批量构建请求时,提取软件批量构建请求中所有构建子任务信息及用于执行构建子任务的目标构建机房;根据构建子任务信息确定对应的目标编译机的标识信息,基于标识信息从目标构建机房中筛选出对应的目标编译机,得到执行所有构建子任务的编译机集群和对应的编译机编码;根据目标编译机编码,调用对应目标编译机集群执行对应的构建子任务,生成对应的第二产品包;在所有构建子任务全部执行成功后,将软件批量构建任务标记为执行成功,将所有第二产品包生成第一产品包并进行软件的部署。该技术方案需要同时进行多个任务的处理时能够自动进行任务的分配以及处理,提高了软件构建的自动性以及构建效率。

附图说明

图1为本发明实施例中软件部署方法的一个实施例示意图;

图2为本发明实施例中软件部署方法的另一个实施例示意图;

图3为本发明实施例中软件部署方法的另一个实施例示意图;

图4为本发明实施例中软件部署方法的另一个实施例示意图;

图5为本发明实施例中软件部署装置的一个实施例示意图;

图6为本发明实施例中软件部署装置的另一个实施例示意图;

图7为本发明实施例中软件部署设备的一个实施例示意图。

具体实施方式

本发明实施例提供了一种软件部署方法、装置、设备及存储介质,接收到软件批量构建请求时,提取软件批量构建请求中所有构建子任务信息及用于执行构建子任务的目标构建机房;根据构建子任务信息确定对应的目标编译机的标识信息,基于标识信息从目标构建机房中筛选出对应的目标编译机,得到执行所有构建子任务的编译机集群和对应的编译机编码;根据目标编译机编码,调用对应目标编译机集群执行对应的构建子任务,生成对应的第二产品包;在所有构建子任务全部执行成功后,将软件批量构建任务标记为执行成功,将所有第二产品包生成第一产品包并进行软件的部署。该技术方案在需要同时进行多个任务的处理时能够自动进行任务的分配以及处理,提高了软件构建的自动性以及构建效率。

本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”或“具有”及其任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

为便于理解,下面对本发明实施例的具体流程进行描述,请参阅图1,本发明实施例中软件部署方法的一个实施例包括:

101、在接收到软件批量构建请求时,提取软件批量构建请求中的所有构建子任务信息以及用于执行构建子任务实现软件构建的目标构建机房;

可以理解的是,本发明的执行主体可以为软件部署装置,还可以是终端或者服务器,具体此处不做限定。本发明实施例以服务器为执行主体为例进行说明。

本步骤中,具体首先接收用户在构建中心的发布系统操作界面上发布的软件批量构建请求,其中,该软件批量构建请求中包含有至少一个构建子任务,本实施例中的构建中心还包含有构建中心主设备,所述构建中心主设备获取到软件批量构建请求后,提取软件批量构建请求中的所有构建子任务信息;其中,构建子任务信息中包含有各构建子任务的构建参数,该构建参数包括机房设置、编译机类型、编译环境以及编译类型等信息。根据所述构建参数计算分配编码,根据分配编码将各构建子任务进行分配,得到各构建子任务对应的目标构建机房;其中所述目标构建机房包括至少一个编译机。

具体地,首先根据构建参数判断本次接收到的软件批量构建请求中的具体构建任务是否需要进行多机房构建,如不需要进行多机房构建,则根据软件批量构建请求中的构建参数生成一个构建子任务,并将构建子任务分配给符合该构建子任务的构建参数对应的目标构建机房;若需要多机房构建,则首先根据各构建子任务中的构建参数判断需要的机房数量,根据各构建子任务信息确定对应的目标构建机房,并将各构建子任务分发给对应的目标构建机房。

102、根据构建子任务信息确定对应的目标编译机的标识信息,并基于标识信息从目标构建机房中筛选出对应的目标编译机,得到执行所有构建子任务的编译机集群和其对应的编译机编码;

待目标构建机房确定完毕后,获取目标构建机房接收到的构建子任务信息,其中,构建子任务信息中包含有当前的构建子任务执行时的构建参数,例如编译机类型、编译环境、编译类型等信息。在机房数据库中根据构建参数即编译机类型、环境、编译类型等信息查找出符合构建子任务的编译机,如果查找出的符合同一件构建子任务的编译机有多个,则获取每个符合条件的编译机的正在运行任务数,在正在运行任务数中最少的编译机中选择出目标编译机。

对目标编译机选择完毕后,获取该符合构建子任务信息的目标编译机编码,将目标编译机编码与所述构建子任务进行关联,将得到的目标编译机组成编译机集群,并将对应的构建子任务标记为已分配。

103、根据目标编译机编码,调用对应的目标编译机集群执行对应的构建子任务,生成对应的第二产品包;

将各构建子任务分配完毕后,根据获取到的各目标编译机编码调用对应的目标编译机作为执行编译机;具体在本实施例中,每个目标构建机房中还有构建中心从设备,每个目标构建机房中构建中心从设备每经过预设时间在数据库中对数据进行查询,如查询到有属于本机房中的目标编译机编码的,则接收对应的构建子任务,并调用与该目标编译机编码对应的编译机作为执行编译机,随后创建工作空间目录开始准备执行构建任务,在当前的目标机房的镜像代码库中获取相应的代码,调用脚本根据获取的代码对对应的构建子任务进行后台构建,同时将任务状态标记为执行中。

具体地,在执行构建子任务前还预先设置了所述构建中心从设备中的任务执行上限,当一台构建中心从设备中同时执行的任务数超过所设置的任务执行上限时,超出的任务会自动进行排队处理。

若构建子任务执行成功,则将构建得到的第二产品包存入产品库中,并将所述第二产品包地址保存到数据库中,同时将构建子任务的任务状态标记为执行成功;若任务执行失败,则查找出任务执行失败的原因,对执行失败的原因进行整理,根据执行失败的原因对构建子任务进行分类存储,生成执行失败报表,并将所述执行失败报表传送给发布系统以便用户进行查看。

104、在所有构建子任务全部执行成功后,将软件批量构建任务标记为执行成功,将所有第二产品包生成第一产品包,并基于第一产品包进行软件的部署。

若检测到全部构建子任务都标记为执行成功后,将所述软件批量构建请求对应的软件批量构建任务标记为执行成功。随后,根据前述步骤中获得的全部第二产品包地址在各机房中查找全部的第二产品包,根据第二产品包生成第一产品包。构建成功后,应用服务器可以通过第一产品包中的内容,进行软件的部署,其中,本实施例中所述的软件的部署为将软件项目本身,包括配置文件、用户手册、帮助文档等进行收集、打包、安装、配置、发布的过程。

若有任务执行失败,则将软件批量构建请求对应的软件批量构建任务标记为执行失败,将所述构建子任务的具体执行结果进行记录,根据本次任务执行的过程中的信息生成构建日志,将构建日志的地址保存到数据库中,并将构建日志地址保存至发布系统中,以便用户进行查看。

本发明实施例中,在需要同时进行多任务的处理时能够自动进行任务的分配以及处理,提高了软件构建的自动性以及构建效率。

请参阅图2,本发明实施例中软件部署方法的另一个实施例包括:

201、在接收到软件批量构建请求时,提取软件批量构建请求中的所有构建子任务信息以及用于执行构建子任务实现软件构建的目标构建机房;

本步骤中具体内容与前述实施例中步骤101中内容基本相同,故在此不再赘述。

202、每隔预设的定时时间查询目标构建机房的机房数据库中的编译机心跳数据;

203、判断各编译机的编译机心跳数据是否正常;

204、将编译机心跳数据正常的编译机的状态信息标记为可用,将编译机心跳数据为异常的编译机的状态信息标记为不可用;

本实施例具体以软件部署装置为执行主体进行说明,该软件部署装置运行时,每隔预设的定时时间查询获取各目标构建机房的机房数据库中包含的编译机心跳数据,以确认各编译机是否处于可用状态。一般地,心跳数据指互联的双方中的一方,每隔固定的时间向另一方发送一个很小的数据包,另一方根据需要确定在收到数据包之后是否回复一个很小的数据包。

本实施例中具体每隔预设的定时时间在各目标构建机房的机房数据库获取编译机心跳数据,根据获取编译机心跳数据判断各编译机的心跳状态是否正常,针对某一台编译机来说,若其心跳数据一直保持按预设时间进行传送,则认为该台编译机的心跳状态是正常的;若某台编译机的心跳数据中断持续时间超过预设定的心跳传送时间,则认为该台编译机的心跳状态为异常的。

获取到各编译机的心跳状态后,根据各编译机的心跳状态,在机房数据库中将各编译机的使用状态标记为可用或不可用。具体地,若编译机的心跳状态正常,则在机房数据库中将心跳状态正常的编译机的使用状态标记为可用;若存在异常,则在机房数据库中将心跳状态为异常的编译机的使用状态标记为不可用;并每隔一定的使用状态更新时间对所述机房数据库中的各编译机的使用状态进行更新。

205、获取目标构建机房中各编译机的状态信息;

206、获取状态信息为可用的编译机编码,得到可用编译机集群;

在机房数据库中获取各编译机的最新的使用状态,基于使用状态被标记为可用的编译机数据生成可用编译机集群,其中,该可用编译机集群中包含有各可用编译机的编译机编码以及具体的编译机信息,该编译机信息可包括有编译机类型、编译环境和编译类型等。

207、根据编译机类型、编译环境和编译类型,在可用编译机集群中筛选出对应的目标编译机,得到各构建子任务对应的预选编译机;

208、获取各预选编译机中正在运行任务数,选择正在运行任务数最少的预选编译机作为目标编译机,得到执行所有构建子任务的编译机集群和其对应的编译机编码;

本实施例中,根据构建子任务信息确定对应的目标编译机的标识信息,其中标识信息包括编译机类型、编译环境和编译类型,获取目标构建机房的机房数据库中的数据信息,根据编译机类型、编译环境和编译类型对机房数据库中的数据信息进行筛选,获取到满足所有条件的编译机,得到预选编译机,并记录预选编译机的编译机编码,其中,本实施例中所述的预选编译机的数量为至少一个。本实施例中的编译机编码可以为编译机的ip地址(internetprotocoladdress,互联网协议地址),可以通过ip地址对应实施例中所有编译机查找到唯一对应的编译机。

获取到预选编译机以及预选编译机编码后,获取全部预选编译机中正在运行的任务数,在全部预选编译机中选择正在运行任务数最少的预选编译机中选择目标编译机,并将目标编译机的编译机编码以及前述步骤中获得的该目标编译机的各类参数对应保存至数据库中,同时通过该目标编译机预计处理的构建子任务的任务编号对该目标编译机编码进行标记,同时将该预计处理的构建子任务的任务状态标记为已分配。

209、根据目标编译机编码,调用对应的目标编译机集群执行对应的构建子任务,生成对应的第二产品包;

210、在所有构建子任务全部执行成功后,将软件批量构建任务标记为执行成功,将所有第二产品包生成第一产品包,并基于第一产品包进行软件的部署。

本实施例中步骤209和步骤210中的具体内容与前述实施例中步骤103和步骤104中的内容基本相同,故在此不再赘述。

本发明实施例中,在需要同时进行多任务的处理时能够自动进行任务的分配以及处理,其中,在进行任务分配时能够根据各编译机的状态和信息对适合的编译机进行选择,提高了软件构建的自动性以及构建效率。

请参阅图3,本发明实施例中软件部署方法的另一个实施例包括:

301、在接收到软件批量构建请求时,提取软件批量构建请求中的所有构建子任务信息以及用于执行构建子任务实现软件构建的目标构建机房;

本步骤中具体内容与前述实施例中步骤101中内容基本相同,故在此不再赘述。

302、获取目标构建机房中各编译机的状态信息;

303、获取状态信息为可用的编译机编码,得到可用编译机集群;

本实施例中,各目标构建机房的机房数据库中预先存储各编译机的状态信息,在机房数据库中获取各编译机的最新的使用状态,基于使用状态被标记为可用的编译机数据生成可用编译机集群,其中,该可用编译机集群中包含有各可用编译机的编译机编码以及具体的编译机信息,该编译机信息可包括有编译机类型、编译环境和编译类型等。

304、根据构建子任务信息确定对应的目标编译机的标识信息,根据标识信息在可用编译机集群中筛选出对应的目标编译机,得到执行所有构建子任务的编译机集群和其对应的编译机编码;

获取各所述构建子任务的构建子任务信息,同时,在可用数据集中获取各可用编译机的编译机编码以及具体的编译机信息,根据构建子任务信息在可用数据集中筛选出编译机信息满足构建子任务信息需求的编译机,将筛选出的满足各所述需求的编译机作为目标编译机并获取各目标编译机的编译机编码。

305、根据目标编译机编码调用目标编译机作为执行编译机,并获取各执行编译机所在的目标构建机房的镜像代码库中包含的代码信息;

306、创建工作空间目录;

307、获取构建子任务中的任务依赖情况;

308、根据任务依赖情况计算出任务依赖结果,并根据各任务依赖结果得到构建任务执行顺序;

309、根据代码信息调用各执行编译机中预置的构建脚本基于构建任务执行顺序执行构建子任务;

310、将构建子任务标记为执行中,同时更新各执行编译机的正在运行任务数;

311、在构建子任务构建成功后,更新执行编译机的正在运行任务数,同时得到构建子任务对应的第二产品包;

本实施例中,将目标编译机编码保存在数据库中后,构建中心从设备每经过预设时间在数据库中查询一次数据,例如每5秒在数据库中查询数据,获得目标编译机编码,若查询到本机相关的目标编译机编码,则将所述目标编译机编码进行暂存。

根据得到的目标编译机编码查找对应的目标编译机,根据目标编译机编码对应的任务编号获取分配的对应构建子任务,在所述目标编译机所在机房的镜像代码库中查找构建子任务所需的代码信息,根据代码信息获取外科变量并创建出单独的工作空间目录。

随后,对多个构建子任务之间进行构建依赖查询,判断所述多个构建子任务是否要进行分析,若得到的结果是不需要进行分析,则返回全并行结果,将所述多个构建子任务进行并行构建;若判断出的结果是需要进行分析,则对所述多个构建子任务进行分析得到分析结果,如果是构建子任务均有构建依赖关系,则根据构建依赖关系判断是全串行处理或得到其他任务执行顺序。得到任务执行顺序后,调用目标编译机根据任务执行顺序对构建子任务执行构建。

具体地,在具体对构建子任务执行构建时,调用外壳脚本对构建子任务进行后台构建,同时将任务状态标记为执行中。

其中,对构建子任务进行后台构建时,首先对构建子任务中的文本信息进行语法分析以及语义分析,得到构建子任务中的语法单元的意义,并将各语法单元转化成目标文件。

若构建任务执行成功,则将构建得到的第二产品包存入产品库中,并将所述第二产品包地址保存到数据库中,同时将构建子任务的任务状态标记为执行成功;若任务执行失败,则查找出任务执行失败的原因,对执行失败的原因进行整理,根据执行失败的原因对构建子任务进行分类存储,生成执行失败报表。

312、在所有构建子任务全部执行成功后,将软件批量构建任务标记为执行成功,将所有第二产品包生成第一产品包,并基于第一产品包进行软件的部署。

本步骤中具体内容与前述实施例中步骤104中内容基本相同,故在此不再赘述。

本发明实施例中,在需要同时进行多任务的处理时能够自动进行任务的分配以及处理,其中在进行多任务的处理时,本实施例中的软件部署方法可以分析该多个任务的依赖情况,根据依赖情况生成任务处理顺序,调用软件构建脚本根据该任务处理顺序进行多个软件构建任务的处理,提高了软件构建的自动性以及构建效率。

请参阅图4,本发明实施例中软件部署方法的另一个实施例包括:

401、在接收到软件批量构建请求时,提取软件批量构建请求中的所有构建子任务信息以及用于执行构建子任务实现软件构建的目标构建机房;

本步骤中具体内容与前述实施例中步骤101中内容基本相同,故在此不再赘述。

402、每隔预设的定时时间查询目标构建机房的机房数据库中的编译机心跳数据;

403、判断各编译机的编译机心跳数据是否正常;

404、将编译机心跳数据正常的编译机的状态信息标记为可用,将编译机心跳数据为异常的编译机的状态信息标记为不可用;

405、获取目标构建机房中各编译机的状态信息;

406、获取状态信息为可用的编译机编码,得到可用编译机集群;

407、根据编译机类型、编译环境和编译类型,在可用编译机集群中筛选出对应的目标编译机,得到各构建子任务对应的预选编译机;

408、获取各预选编译机中正在运行任务数,选择正在运行任务数最少的预选编译机作为目标编译机,得到执行所有构建子任务的编译机集群和其对应的编译机编码;

本实施例中步骤402-408中具体内容与前述实施例中步骤202-208中内容基本相同,故在此不再赘述。

409、根据目标编译机编码调用目标编译机作为执行编译机,并获取各执行编译机所在的目标构建机房的镜像代码库中包含的代码信息;

410、创建工作空间目录;

411、获取构建子任务中的任务依赖情况;

412、根据任务依赖情况计算出任务依赖结果,并根据各任务依赖结果得到构建任务执行顺序;

413、根据代码信息调用各执行编译机中预置的构建脚本基于构建任务执行顺序执行构建子任务;

414、将构建子任务标记为执行中,同时更新各执行编译机的正在运行任务数;

415、在构建子任务构建成功后,更新执行编译机的正在运行任务数,同时得到构建子任务对应的第二产品包;

本实施例中步骤409-415中具体内容与前述实施例中步骤305-311中具体内容基本相同,故在此不再赘述。

416、在所有构建子任务全部执行成功后,将软件批量构建任务标记为执行成功,将所有第二产品包生成第一产品包,并基于第一产品包进行软件的部署;

本步骤中具体内容与前述实施例中步骤104中内容基本相同,故在此不再赘述。

417、根据构建子任务的任务执行情况生成任务执行记录;

418、获取各任务执行记录,根据各任务执行记录生成软件构建日志。

本实施例中,在进行具体的构建任务操作时会对软件构建任务进行状态标记并在任务的执行过程中生成任务执行情况,随后根据各任务执行情况生成任务执行记录,其中,任务执行情况包括各执行编译机的任务执行时间和任务执行结果。

例如,在对目标编译机进行选择后,会将目标编译机编码保存在数据库中,此时将对应的构建子任务标记为已分配;在目标编译机获取到构建子任务时,会将对应的构建子任务标记为执行中,基于这些任务状态以及任务状态的相关信息例如处理时间或处理者编码生成任务自行记录根据这些任务执行记录生成软件构建日志,对软件构建日志中的节点进行分析,将重要节点进行标记。将标记后的软件构建日志保存至数据库中以便随时根据用户的需求进行查看。

本发明实施例中,在需要同时进行多任务的处理时能够自动进行任务的分配以及处理,其中在进行多任务的处理时,本实施例中的软件部署方法可以进行任务分配时能够根据各编译机的状态和信息对适合的编译机进行选择;还能够分析该多个任务的依赖情况并生成任务处理顺序,调用软件构建脚本根据该任务处理顺序进行多个软件构建任务的处理,提高了软件构建的自动性以及构建效率;此外,本实施例中提出的软件部署方法还能够将任务处理的信息生成软件构建日志,以便用户进行查看。

上面对本发明实施例中软件部署方法进行了描述,下面对本发明实施例中软件部署装置进行描述,请参阅图5,本发明实施例中软件部署装置一个实施例包括:

任务分配模块501,用于在接收到软件批量构建请求时,提取所述软件批量构建请求中的所有构建子任务信息以及用于执行构建子任务实现软件构建的目标构建机房,其中所述目标构建机房包括至少一个编译机;

编译机筛选模块502,用于根据所述构建子任务信息确定对应的目标编译机的标识信息,并基于所述标识信息从所述目标构建机房中筛选出对应的目标编译机,得到执行所有所述构建子任务的编译机集群和其对应的编译机编码;

执行模块503,用于根据所述目标编译机编码,调用对应的目标编译机集群执行对应的构建子任务,生成对应的第二产品包;

构建部署模块504,用于在所有构建子任务全部执行成功后,将软件批量构建任务标记为执行成功,将所有所述第二产品包生成第一产品包,并基于所述第一产品包进行软件的部署。

本发明实施例中,在需要同时进行多个任务的处理时能够自动进行任务的分配以及处理,提高了软件构建的自动性以及构建效率。

请参阅图6,本发明实施例中软件部署装置的另一个实施例包括:

任务分配模块501,用于在接收到软件批量构建请求时,提取所述软件批量构建请求中的所有构建子任务信息以及用于执行构建子任务实现软件构建的目标构建机房,其中所述目标构建机房包括至少一个编译机;

编译机筛选模块502,用于根据所述构建子任务信息确定对应的目标编译机的标识信息,并基于所述标识信息从所述目标构建机房中筛选出对应的目标编译机,得到执行所有所述构建子任务的编译机集群和其对应的编译机编码;

执行模块503,用于根据所述目标编译机编码,调用对应的目标编译机集群执行对应的构建子任务,生成对应的第二产品包;

构建部署模块504,用于在所有构建子任务全部执行成功后,将软件批量构建任务标记为执行成功,将所有所述第二产品包生成第一产品包,并基于所述第一产品包进行软件的部署。

可选的,所述编译机筛选模块502包括:

使用状态查询单元5021,用于获取所述目标构建机房中各编译机的状态信息,其中,所述状态信息包括可用和不可用;

可用编译机筛选单元5022,用于获取所述状态信息为可用的编译机编码,得到可用编译机集群;

编码筛选单元5023,用于根据所述构建子任务信息确定对应的目标编译机的标识信息,根据所述标识信息在可用编译机集群中筛选出对应的目标编译机,得到执行所有所述构建子任务的编译机集群和其对应的编译机编码。

可选的,所述软件部署装置还包括状态信息获取模块,所述状态信息获取模块具体包括:

心跳数据获取单元,用于每隔预设的定时时间查询所述目标构建机房的机房数据库中的编译机心跳数据;

心跳数据判断单元,用于判断各所述编译机的编译机心跳数据是否正常;

状态标记单元,用于将所述编译机心跳数据正常的编译机的状态信息标记为可用,将所述编译机心跳数据为异常的编译机的状态信息标记为不可用。

可选的,所述标识信息中包括编译机类型、编译环境和编译类型,所述编码筛选单元5023包括:

编译机预选子单元,用于根据所述编译机类型、编译环境和编译类型在所述可用编译机集群中筛选出对应的目标编译机,得到各所述构建子任务对应的预选编译机,其中,所述预选编译机的数量为至少一个;

编译机编码获取子单元,用于获取各所述预选编译机中正在运行任务数,选择所述正在运行任务数最少的预选编译机作为目标编译机,得到执行所有所述构建子任务的编译机集群和其对应的编译机编码。

可选的,所述执行模块503包括:

代码提取单元5031,用于根据所述目标编译机编码调用所述目标编译机作为执行编译机,并获取各所述执行编译机所在的目标构建机房的镜像代码库中包含的代码信息;

第一构建执行单元5032,用于创建工作空间目录,根据所述代码信息调用各所述执行编译机中预置的构建脚本进行软件构建,并将所述构建子任务标记为执行中,同时更新各所述执行编译机的正在运行任务数;

第二构建执行单元5033,用于在所述构建子任务构建成功后,更新所述执行编译机的正在运行任务数,同时得到所述构建子任务对应的第二产品包。

可选的,所述第一构建执行单元5032包括:

依赖情况获取子单元,用于获取所述构建子任务中的任务依赖情况;

执行顺序计算子单元,用于根据所述任务依赖情况计算出任务依赖结果,并根据各所述任务依赖结果得到构建任务执行顺序;

执行子单元,用于根据所述代码信息调用各所述执行编译机中预置的构建脚本基于所述构建任务执行顺序执行所述构建子任务。

可选的,所述软件部署装置还包括构建日志生成模块,所述构建日志生成模块具体包括:

任务记录获取单元,用于根据所述构建子任务的任务执行情况生成任务执行记录,其中,所述任务执行情况包括各所述执行编译机的任务执行时间和任务执行结果;

日志生成单元,用于获取各所述任务执行记录,根据各所述任务执行记录生成软件构建日志。

本发明实施例中,在需要同时进行多个任务的处理时能够自动进行任务的分配以及处理,其中在进行多个任务的处理时,本实施例中的软件部署方法可以进行任务分配时能够根据各编译机的状态和信息对适合的编译机进行选择;还能够分析该多个任务的依赖情况并生成任务处理顺序,调用软件构建脚本根据该任务处理顺序进行多个软件构建任务的处理,提高了软件构建的自动性以及构建效率;此外,本实施例中提出的软件部署方法还能够将任务处理的信息生成软件构建日志,以便用户进行查看。

上面图5和图6从模块化功能实体的角度对本发明实施例中的软件部署装置进行详细描述,下面从硬件处理的角度对本发明实施例中软件部署设备进行详细描述。

图7是本发明实施例提供的一种软件部署设备的结构示意图,该软件部署设备700可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(centralprocessingunits,cpu)710(例如,一个或一个以上处理器)和存储器720,一个或一个以上存储应用程序733或数据732的存储介质730(例如一个或一个以上海量存储设备)。其中,存储器720和存储介质730可以是短暂存储或持久存储。存储在存储介质730的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对软件部署设备700中的一系列指令操作。更进一步地,处理器710可以设置为与存储介质730通信,在软件部署设备700上执行存储介质730中的一系列指令操作。

软件部署设备700还可以包括一个或一个以上电源740,一个或一个以上有线或无线网络接口750,一个或一个以上输入输出接口760,和/或,一个或一个以上操作系统731,例如windowsserve,macosx,unix,linux,freebsd等等。本领域技术人员可以理解,图7示出的软件部署设备结构并不构成对软件部署设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

本发明还提供一种计算机设备,该计算机设备可以是能够执行上述实施例中所述的软件部署方法的任何一种设备,所述计算机设备包括存储器和处理器,存储器中存储有计算机可读指令,计算机可读指令被处理器执行时,使得处理器执行上述各实施例中的所述软件部署方法的步骤。

本发明所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。

本发明还提供一种计算机可读存储介质,该计算机可读存储介质可以为非易失性计算机可读存储介质,该计算机可读存储介质也可以为易失性计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在计算机上运行时,使得计算机执行所述软件部署方法的步骤。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

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