CN116009881A - 产品部署方法、装置、设备、存储介质及计算机程序产品 - Google Patents
产品部署方法、装置、设备、存储介质及计算机程序产品 Download PDFInfo
- Publication number
- CN116009881A CN116009881A CN202111237460.2A CN202111237460A CN116009881A CN 116009881 A CN116009881 A CN 116009881A CN 202111237460 A CN202111237460 A CN 202111237460A CN 116009881 A CN116009881 A CN 116009881A
- Authority
- CN
- China
- Prior art keywords
- product
- deployment
- deployed
- component
- arrangement
- 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.)
- Pending
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/30—Computing systems specially adapted for manufacturing
Abstract
本申请实施例涉及计算机技术领域,公开一种产品部署方法包括:接收针对待部署产品集的部署请求,待部署产品集包括N个待部署产品,N个待部署产品中每个待部署产品包括待部署组件,N为正整数;响应于部署请求,创建待部署产品集对应的部署编排文件,部署编排文件用于指示:每个待部署产品的产品部署顺序以及产品部署操作,以及每个待部署产品中包括的待部署组件的组件部署顺序以及组件部署操作;获取待部署产品集对应的部署规划信息,并基于部署编排文件以及部署规划信息,对N个待部署产品进行部署;部署规划信息包括每个待部署产品的产品部署地址,以及每个待部署产品中包括的待部署组件的组件部署地址;可提高待部署产品的部署效率。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种产品部署方法、装置、设备、存储介质及计算机程序产品。
背景技术
随着计算机技术的飞速发展,各种各样的应用应运而生,技术人员可以将开发的应用产品在预设环境中进行部署,以使该应用产品的用户可以通过访问在该预设环境中部署的该应用产品,从而使用该应用产品提供的相应服务,例如,该应用产品可以是提供云服务的云产品。基于此,如何提高应用产品的部署效率是当前的研究热点。
发明内容
本申请实施例提供一种产品部署方法、装置、设备、存储介质及计算机程序产品,可提高待部署产品的部署效率。
一方面,本申请实施例提供了一种产品部署方法,包括:
接收针对待部署产品集的部署请求,所述待部署产品集包括N个待部署产品,所述N个待部署产品中每个待部署产品包括待部署组件,N为正整数;
响应于所述部署请求,创建所述待部署产品集对应的部署编排文件,所述部署编排文件用于指示:所述每个待部署产品的产品部署顺序以及产品部署操作,以及所述每个待部署产品中包括的待部署组件的组件部署顺序以及组件部署操作;
获取所述待部署产品集对应的部署规划信息,并基于所述部署编排文件以及所述部署规划信息,对所述N个待部署产品进行部署;所述部署规划信息包括所述每个待部署产品的产品部署地址,以及所述每个待部署产品中包括的待部署组件的组件部署地址。
一方面,本申请实施例提供了一种产品部署装置,包括:
获取单元,用于接收针对待部署产品集的部署请求,所述待部署产品集包括N个待部署产品,所述N个待部署产品中每个待部署产品包括待部署组件,N为正整数;
处理单元,用于响应于所述部署请求,创建所述待部署产品集对应的部署编排文件,所述部署编排文件用于指示:所述每个待部署产品的产品部署顺序以及产品部署操作,以及所述每个待部署产品中包括的待部署组件的组件部署顺序以及组件部署操作;
所述获取单元,还用于获取所述待部署产品集对应的部署规划信息;
所述处理单元,还用于基于所述部署编排文件以及所述部署规划信息,对所述N个待部署产品进行部署;所述部署规划信息包括所述每个待部署产品的产品部署地址,以及所述每个待部署产品中包括的待部署组件的组件部署地址。
一方面,本申请实施例提供了一种产品部署设备,其特征在于,所述产品部署设备包括输入接口和输出接口,还包括:
处理器,适于实现一条或多条指令;以及,
计算机存储介质,所述计算机存储介质存储有一条或多条指令,所述一条或多条指令适于由所述处理器加载并执行上述产品部署方法。
一方面,本申请实施例提供了一种计算机存储介质,其特征在于,所述计算机存储介质中存储有计算机程序指令,所述计算机程序指令被处理器执行时,用于执行上述产品部署方法。
一方面,本申请实施例提供了一种计算机程序产品或计算机程序,所述计算机程序产品或所述计算机程序包括计算机指令,所述计算机指令存储在计算机可读存储介质中;产品部署设备的处理器从所述计算机可读存储介质中读取所述计算机指令,所述处理器执行所述计算机指令,所述计算机指令被处理器执行时,用于执行上述产品部署方法。
本申请实施例中,产品部署设备在接收到针对待部署产品集的部署请求之后,可以响应于部署请求,创建待部署产品集对应的部署编排文件;然后基于部署编排文件以及获取到的待部署产品集对应的部署规划信息,对待部署产品集中包括的N个待部署产品进行部署,其中,N为正整数,N个待部署产品中每个待部署产品包括待部署组件;部署编排文件用于指示:每个待部署产品的产品部署顺序以及产品部署操作,以及每个待部署产品中包括的待部署组件的组件部署顺序以及组件部署操作;部署规划信息包括每个待部署产品的产品部署地址,以及每个待部署产品中包括的待部署组件的组件部署地址。可以通过部署编排文件中指示的待部署产品的产品部署顺序,依次对待部署产品集中包括的N个待部署产品进行部署,以及可以通过部署编排文件中指示的每个待部署产品中包括的待部署组件的组件部署顺序,依次对每个待部署产品中包括的待部署组件进行部署,可以基于一次部署请求,实现对N个待部署产品的部署,可提高待部署产品的部署效率,特别是可提高在需要对多个待部署产品进行部署时的部署效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种产品部署系统的结构示意图;
图2是本申请实施例提供的一种基于产品部署系统进行部署的示意图;
图3是本申请实施例提供的一种产品部署方法的流程示意图;
图4是本申请实施例提供的一种部署编排文件的示意图;
图5是本申请实施例提供的另一种产品部署方法的流程示意图;
图6是本申请实施例提供的一种部署全局表的示意图;
图7是本申请实施例提供的一种生成产品编排文件的示意图;
图8是本申请实施例提供的一种分配部署工作标识的示意图;
图9是本申请实施例提供的另一种生成产品编排文件的示意图;
图10是本申请实施例提供的另一种生成产品编排文件的示意图;
图11是本申请实施例提供的另一种生成产品编排文件的示意图;
图12是本申请实施例提供的一种生成部署编排文件的示意图;
图13是本申请实施例提供的一种生成待部署组件对应的部署任务的示意图;
图14是本申请实施例提供的一种基于部署引擎中的任务执行模块执行部署任务的示意图;
图15是本申请实施例提供的另一种基于产品部署系统进行部署的示意图;
图16是本申请实施例提供的另一种基于产品部署系统进行部署的示意图;
图17是本申请实施例提供的另一种产品部署方法的流程示意图;
图18是本申请实施例提供的一种产品编排文件创建记录表的示意图;
图19是本申请实施例提供的一种初始化后的产品集部署进度树的示意图;
图20是本申请实施例提供的一种部署进度树存储表的示意图;
图21是本申请实施例提供的一种部署任务表的示意图;
图22a是本申请实施例提供的一种更新产品集部署进度树的示意图;
图22b是本申请实施例提供的另一种更新产品集部署进度树的示意图;
图23是本申请实施例提供的一种部署历史表的示意图;
图24a是本申请实施例提供的一种基于更新线程更新产品集部署进度树的示意图;
图24b是本申请实施例提供的另一种基于更新线程更新产品集部署进度树的示意图;
图25是本申请实施例提供的一种显示待部署产品集的部署进度的页面示意图;
图26是本申请实施例提供的一种部署视图前端获取部署日志的示意图;
图27是本申请实施例提供的一种产品部署装置的结构示意图;
图28是本申请实施例提供的一种产品部署设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
为了提高待部署产品的部署效率,本申请实施例提供了一种产品部署方案,可以在接收到针对待部署产品集的部署请求之后,响应于部署请求,创建待部署产品集对应的部署编排文件;然后基于部署编排文件以及获取到的待部署产品集对应的部署规划信息,对待部署产品集中包括的N个待部署产品进行部署,其中,N为正整数,N个待部署产品中每个待部署产品包括待部署组件;部署编排文件用于指示:每个待部署产品的产品部署顺序以及产品部署操作,以及每个待部署产品中包括的待部署组件的组件部署顺序以及组件部署操作;部署规划信息包括每个待部署产品的产品部署地址,以及每个待部署产品中包括的待部署组件的组件部署地址。其中,待部署产品可以为将要在预设环境中进行部署的应用产品,例如可以是能提供云服务的云产品,本申请实施例后续以待部署产品为能提供云服务的云产品进行介绍。
基于上述产品部署方案,本申请实施例提供了一种产品部署系统,参见图1,为本申请实施例提供的一种产品部署系统的结构示意图。图1所示的产品部署系统可以包括部署视图前端101以及产品部署设备102。其中,部署视图前端101可以运行在终端设备中,终端设备可以包括智能手机、平板电脑、笔记本电脑、台式计算机、智能车载以及智能可穿戴设备中的任意一种或多种。产品部署设备102可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(ContentDelivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。部署视图前端101与产品部署设备102之间可以通过有线或无线通信方式进行直接或间接地通信连接,本申请在此不做限制。
在一个实施例中,产品部署设备102用于提供产品部署服务,部署视图前端101用于技术人员与产品部署设备102所提供的产品部署服务的交互,即技术人员可以通过终端设备中运行的部署视图前端101实现与产品部署设备102所提供的产品部署服务的交互,也即技术人员可以通过终端设备中运行的产品部署前端101来使用产品部署设备102所提供的产品部署服务。例如,技术人员可以通过部署视图前端101所提供的部署触发渠道,执行对N个云产品的部署触发操作,该N个云产品即为N个待部署产品。部署视图前端101可以基于技术人员在部署触发渠道中执行的对N个待部署产品的部署触发操作,生成针对待部署产品集的部署请求,该待部署产品集是由该N个待部署产品(该N个云产品)构成的,并将生成的针对待部署产品集的部署请求发送至产品部署设备102中。产品部署设备102接收到针对待部署产品集的部署请求之后,可以响应于部署请求,创建待部署产品集对应的部署编排文件;获取待部署产品集对应的部署规划信息,并基于部署编排文件以及部署规划信息,对N个待部署产品进行部署。进一步的,产品部署设备基于部署编排文件以及部署规划信息,对N个待部署产品进行部署时:可以基于部署编排文件中,每个待部署产品的产品部署顺序、每个待部署产品中包括的待部署组件的组件部署顺序以及部署规划信息,依次生成并执行待部署产品集中每个待部署组件对应的部署任务,其中,一个部署任务用于指示将一个待部署组件部署在相应的组件部署地址中。也就是说,产品部署设备102可以通过生成并执行待部署产品集中每个待部署产品中包括的待部署组件对应的部署任务,来实现对每个待部署产品的部署,也即可以实现对待部署产品集中N个待部署产品的部署。
在一个实施例中,产品部署设备102中可以包括部署引擎以及流程编排引擎,产品部署设备102依次生成并执行待部署产品集中每个待部署组件对应的部署任务时,可以调用流程编排引擎,基于部署编排文件中,每个待部署产品的产品部署顺序、每个待部署产品中包括的待部署组件的组件部署顺序以及部署规划信息,依次生成待部署产品集中每个待部署组件对应的部署任务;调用流程编排引擎按序将待部署产品集中每个待部署组件对应的部署任务传输至部署引擎;调用部署引擎按序执行所接收到的部署任务。如图2所示,为本申请实施例提供的一种基于产品部署系统进行部署的示意图,部署视图前端可以基于技术人员在部署触发渠道中执行的对N个待部署产品的部署触发操作,生成针对待部署产品集的部署请求,该待部署产品集是由该N个待部署产品构成的,并将生成的针对待部署产品集的部署请求发送至产品部署设备中,具体可以发送至产品部署设备的部署引擎中。部署引擎接收到针对待部署产品集的部署请求之后,可以响应于部署请求,创建待部署产品集对应的部署编排文件;然后部署引擎可以发送部署任务生成请求至产品部署设备的流程编排引擎中,该部署任务生成请求用于请求生成待部署产品集中包括的待部署组件对应的部署任务,该部署任务生成请求中可以携带部署编排文件。流程编排引擎接收到部署任务生成请求之后,可以获取待部署产品集对应的部署规划信息,然后基于部署编排文件中,每个待部署产品的产品部署顺序、每个待部署产品中包括的待部署组件的组件部署顺序以及部署规划信息,依次生成待部署产品集中每个待部署组件对应的部署任务,并按序将待部署产品集中每个待部署组件对应的部署任务传输至部署引擎。部署引擎按序执行所接收到的部署任务。
基于上述产品部署方案以及产品部署系统,本申请实施例提供了一种产品部署方法。参见图3,为本申请实施例提供的一种产品部署方法的流程示意图。图3所示的产品部署方法可由产品部署设备执行。图3所示的产品部署方法可包括如下步骤:
S301,接收针对待部署产品集的部署请求。
其中,待部署产品集包括N个待部署产品,N个待部署产品中每个待部署产品包括待部署组件,N为正整数。
在一个实施例中,待部署产品可以为将要在预设环境中进行部署的应用产品,例如可以是能提供云服务的云产品;该应用产品可以是技术人员所开发的,例如待部署产品可以是技术人员开发的能提供云服务的云产品。预设环境为待部署产品的部署环境,举例来说,若在面向企业(ToB)的交付场景中,企业a购买了云产品A、云产品B以及云产品C,即企业a购买了云产品A、云产品B以及云产品C所提供的云服务,则技术人员需要将云产品A、云产品B以及云产品C部署在预设环境中,例如部署在企业a购买的云空间中,以实现对企业a的云产品A、云产品B以及云产品C的交付,进而使得企业a的员工能够通过访问云空间中部署的云产品A、云产品B以及云产品C来使用云产品A、云产品B以及云产品C所提供的相应云服务。
在一个实施例中,待部署产品中包括的待部署组件为从待部署产品的多个组件中确定出来的,即待部署产品中包括的待部署组件为待部署产品的多个组件中的一个或多个。待部署产品中包括的待部署组件为待部署产品的多个组件中,待部署版本与环境部署版本不相同的组件。其中,待部署产品的一个组件的待部署版本为该一个组件的组件版本,该待部署产品的一个组件的环境部署版本为该一个组件对应于在预设环境中已经部署且存在的已部署组件的组件版本。举例来说,若存在云产品A,云产品A的组件分别为组件1、组件2以及组件3,其中1.0版本的云产品A的组件分别为1.0版本的组件1、1.0版本的组件2以及1.0版本的组件3,2.0版本的云产品A的组件分别为2.0版本的组件1、2.0版本的组件2以及2.0版本的组件3,3.0版本的云产品A的组件分别为2.0版本的组件1、3.0版本的组件2以及3.0版本的组件3;若待部署产品为3.0版本的云产品A,若先后在预设环境中部署了1.0版本的云产品A以及2.0版本的云产品A,且预设环境中当前存在的云产品A为2.0版本的云产品A,即该待部署产品的多个组件对应的环境部署版本分别为:2.0版本的组件1、2.0版本的组件2以及2.0版本的组件3;那么,该待部署产品(3.0版本的产品A)的多个组件(2.0版本的组件1、3.0版本的组件2以及3.0版本的组件3)中,待部署版本与环境部署版本不相同的组件为3.0版本的组件2以及3.0版本的组件3;则该待部署产品中包括的待部署组件分别为3.0版本的组件2以及3.0版本的组件3。
在一个实施例中,产品部署设备可以接收部署视图前端发送的针对待部署产品集的部署请求,其中,针对待部署产品集的部署请求是部署视图前端基于在部署触发渠道中检测到的针对N个待部署产品的部署触发操作生成。可选的,部署视图前端生成的针对待部署产品集的部署请求中可以携带触发部署该N个待部署产品的部署触发渠道信息,以使产品部署设备可以获取到该N个待部署产品的部署触发渠道。进一步的,产品部署设备获取到的触发部署该N个待部署产品的部署触发渠道信息,可以作为部署日志物料,并基于此生成包括该部署触发渠道信息的部署日志,以使技术人员可以对该N个待部署产品的此次部署进行了解。其中,部署视图前端所提供的部署触发渠道示例性的可以包括部署视图前端所提供的概览页面中的一键部署(OverView Deploy,可以用OVD表示)、云产品部署(CloudProduct Deploy,可以用CPD表示)、持续集成与持续交付触发部署(ContinuousIntegration&Continuous Deployment,可以用CICD表示)以及全局数据部署(Global DataDeploy,可以用GDD表示)等。
S302,响应于部署请求,创建待部署产品集对应的部署编排文件。
其中,部署编排文件用于指示:每个待部署产品的产品部署顺序以及产品部署操作,以及每个待部署产品中包括的待部署组件的组件部署顺序以及组件部署操作。
在一个实施例中,待部署产品集对应的部署编排文件是基于待部署产品集中包括的每个待部署产品对应的产品编排文件生成的,每个待部署产品对应的产品编排文件是基于每个待部署产品中包括的待部署组件的组件编排文件生成的。其中,一个待部署组件的组件编排文件可以包括该一个待部署组件的组件标识以及该一个待部署组件的组件部署操作信息;一个待部署产品对应的产品编排文件可以包括该一个待部署产品的产品标识以及该一个待部署产品中包括的待部署组件的组件编排文件;其中,待部署组件对应的组件部署操作信息可以指示该待部署组件的组件部署操作,一个待部署产品中包括的所有待部署组件所对应的组件部署操作信息可以反映该待部署产品的产品部署操作;部署编排文件可以包括待部署产品集的产品集标识以及待部署产品集中包括的每个待部署产品对应的产品编排文件。
举例来说,若待部署产品集为云产品集A;云产品集A中包括的待部署产品的产品部署顺序依次为:云产品A、云产品B以及云产品C;云产品A中包括的待部署组件的组件部署顺序依次为组件2以及组件3,云产品B中包括的待部署组件的组件部署顺序依次为组件4以及组件5,云产品C中包括的待部署组件的组件部署顺序依次为组件6;若部署组件2时需依次执行组件部署操作4、组件部署操作5以及组件部署操作6;部署组件3时需依次执行组件部署操作7、组件部署操作8、组件部署操作9以及组件部署操作10;部署组件4时需依次执行组件部署操作11、组件部署操作12以及组件部署操作13;部署组件5时需依次执行组件部署操作14、组件部署操作15、组件部署操作16以及组件部署操作17;部署组件6时需依次执行组件部署操作18、组件部署操作19以及组件部署操作20;则云产品集A对应的部署编排文件可以如图4所示,其中,云产品A对应的产品编排文件可以如401标记所示,组件2的组件编排文件可以如402标记所示;其中,待部署产品的产品部署顺序可以由部署编排文件中的待部署产品的产品标识的排列顺序示出,待部署组件的组件部署顺序可以由部署编排文件中的待部署组件的组件标识的排列顺序示出。
S303,获取待部署产品集对应的部署规划信息,并基于部署编排文件以及部署规划信息,对N个待部署产品进行部署。
其中,部署规划信息包括每个待部署产品的产品部署地址,以及每个待部署产品中包括的待部署组件的组件部署地址。其中,一个待部署产品的产品部署地址为预设环境中将该一个待部署产品进行部署的地址,一个待部署组件的组件部署地址为预设环境中将该一个待部署组件进行部署的地址,其中,一个待部署产品中包括的待部署组件的组件部署地址可以在该一个待部署产品的产品部署地址的地址范围内。
在一个实施例中,产品部署设备可以基于部署编排文件中包括的,每个待部署产品的产品部署顺序、每个待部署产品中包括的待部署组件的组件部署顺序以及部署规划信息,依次对待部署产品集中每个待部署组件进行部署,从而进一步实现对待部署产品集中包括的N个待部署产品的部署。
本申请实施例中,产品部署设备在接收到针对待部署产品集的部署请求之后,可以响应于部署请求,创建待部署产品集对应的部署编排文件;然后基于部署编排文件以及获取到的待部署产品集对应的部署规划信息,对待部署产品集中包括的N个待部署产品进行部署,其中,N为正整数,N个待部署产品中每个待部署产品包括待部署组件;部署编排文件用于指示:每个待部署产品的产品部署顺序以及产品部署操作,以及每个待部署产品中包括的待部署组件的组件部署顺序以及组件部署操作;部署规划信息包括每个待部署产品的产品部署地址,以及每个待部署产品中包括的待部署组件的组件部署地址。可以通过部署编排文件中指示的待部署产品的产品部署顺序,依次对待部署产品集中包括的N个待部署产品进行部署,以及可以通过部署编排文件中指示的每个待部署产品中包括的待部署组件的组件部署顺序,依次对每个待部署产品中包括的待部署组件进行部署,可以基于一次部署请求,实现对N个待部署产品的部署,可提高待部署产品的部署效率,特别是可提高在需要对多个待部署产品进行部署时的部署效率。
基于上述产品部署系统以及产品部署方法,本申请实施例提供了另一种产品部署方法。参见图5,为本申请实施例提供的另一种产品部署方法的流程示意图。图5所示的产品部署方法可由产品部署设备执行。图5所示的产品部署方法可包括如下步骤:
S501,接收针对待部署产品集的部署请求。
其中,待部署产品集包括N个待部署产品,N个待部署产品中每个待部署产品包括待部署组件,N为正整数。其中,步骤S501与上述步骤S301一致,在此不再赘述。
S502,响应于部署请求,获取组件编排模板,并基于组件编排模板生成每个待部署产品中包括的待部署组件的组件编排文件。
在一个实施例中,产品部署设备在接收到针对待部署产品集的部署请求之后,响应于部署请求,可以先为该待部署产品集的此次部署分配一个部署工作组标识,并将该分配的部署工作组标识作为该待部署产品集的此次部署的数据库主键,以使后续可以在数据库中基于该分配的部署工作组标识维护该待部署产品集的此次部署所产生的数据;例如,可以基于该分配的部署工作组标识在数据库中维护该待部署产品集的此次部署所生成的:待部署组件的组件编排文件、待部署产品对应的产品编排文件、待部署产品集对应的部署编排文件以及部署日志等数据;换言之,该分配的部署工作组标识可以唯一标识数据库中存储的该待部署产品集的此次部署所产生的数据;也就是说,在对该待部署产品集的此次部署所产生的数据在数据库中进行入库存储时,可以与该分配的部署工作组标识进行绑定,并可以基于该分配的部署工作组标识从数据库中获取该待部署产品集的此次部署所产生的数据。进一步的,数据处理设备为任一待部署产品集的每次部署均会分配一个部署工作组标识。
在一个实施例中,部署工作组标识可以由字段JobGroupID表示;产品部署设备为任一待部署产品集的每次部署分配一个部署工作组标识时,可以基于数据库自增主键的方法,从1开始自增。例如,若产品部署设备首次接收到的部署请求为针对待部署产品集A的部署请求,则产品部署设备为该待部署产品集A的此次部署所分配的部署工作组标识可以为1,即JobGroupID=1,若产品部署设备第二次接收到的部署请求为针对待部署产品集B的部署请求,则产品部署设备为该待部署产品集B的此次部署所分配的部署工作组标识可以为2,即JobGroupID=2。可选的,可以在数据库中创建部署工作组标识生成记录表来对产品部署设备为每次部署所分配的部署工作组标识进行记录,例如可以将数据库的库名设置为db_tce_deployment_engine,将部署工作组标识生成记录表的表名设置为t_auto_increment_jobgroupid,部署工作组标识可以由字段JobGroupID表示,例如可以为1(即JobGroupID=1),其中字段JobGroupID的数据类型可以为:数据库对应的系统数据类型(bigint)、无符号类型(unsigned)、非空类型(not null)以及用于记录数据自增的auto_increment类型等。
在一个实施例中,组件编排模板可以包括组件标识字段以及组件部署操作信息字段,组件标识字段用于填充待部署组件的组件标识,组件部署操作信息字段用于填充待部署组件对应的组件部署操作信息,其中,待部署组件对应的组件部署操作信息可以用于指示待部署组件的组件部署操作。
在一个实施例中,产品部署设备在获取组件编排模板之前,可以响应于部署请求,获取每个待部署产品中包括的待部署组件,其中,每个待部署产品中包括的待部署组件的数量为一个或多个。具体实现中,产品部署设备获取每个待部署产品中包括的待部署组件时,可以先获取每个待部署产品的多个组件以及每个组件的待部署版本;将每个待部署产品的多个组件中,待部署版本与环境部署版本不相同的组件确定为每个待部署产品中包括的待部署组件。其中,待部署产品的一个组件的待部署版本为该一个组件的组件版本,该待部署产品的一个组件的环境部署版本为该一个组件对应于在预设环境中已经部署且存在的已部署组件的组件版本。
可选的,待部署产品的每个组件的环境部署版本可以存储于数据库中的部署全局表中,产品部署设备可以从数据库的部署全局表中获取待部署产品的每个组件的环境部署版本。如图6所示,为本申请实施例提供的一种部署全局表的示意图;其中,将数据库的库名可以设置为db_tce_deployment_engine,部署全局表的表名可以设置为t_global_instance_deploy,待部署产品集的此次部署的主键仍然为分配的部署工作组标识。部署全局表的主键为(待部署产品)的产品名称或(待部署产品的组件的)组件名称,其对应的字段为instanceName,该字段的数据类型可以为最大长度为255的字符串类型(varchar(255))以及非空类型(notnull);还可以包括(待部署产品的)产品标识或(待部署产品的组件的)组件标识,其对应的字段为instanceId,该字段的数据类型可以为最大长度为255的字符串类型(varchar(255))以及默认值为null的default null类型;还可以包括该部署全局表的记录级别,其对应的字段为instanceLevel,例如可以为产品(Porduct)级别或组件(Comp)级别;还可以包括(待部署产品或待部署产品的组件的)环境部署版本,其对应的字段为instanceVersion;还可以包括部署触发渠道信息,其对应的字段为triggerSource,例如可以为CICD触发部署,即triggerSource=CICD;还可以包括该部署全局表的记录的创建时间,其对应的字段为timeCreate,该字段的数据类型可以为日期时间类型(datetime)以及default null类型;还可以包括该部署全局表的记录的最近更新时间,其对应的字段为timeUpdate;还可以包括(待部署产品或待部署产品的组件)的当前部署状态,其对应的字段为deployStatus,例如可以为已成功;以及还可以包括(待部署产品的组件)所属待部署产品,其对应的字段为belongProduct。进一步的,可以基于部署全局表判断该待部署产品的组件是否可以进行部署,以及是否需要重新部署(即可以基于部署全局表判断是否将该待部署产品的一个组件确定为该待部署产品中包括的一个待部署组件)。
具体实现中,产品部署设备获取组件编排模板时,可以根据待部署组件的组件类型,获取与该待部署组件的组件类型相匹配的组件编排模板。具体的,数据库中预先存储有技术人员设计好的,与各种组件类型相匹配的组件编排模板,产品部署设备在获取到待部署组件的组件类型之后,就可以根据待部署组件的组件类型,从数据库中获取与该待部署组件的组件类型相匹配的组件编排模板。例如,若待部署组件的组件类型为image类型,则可以从数据库中获取与image类型相匹配的组件编排模板,若待部署组件的组件类型为dbsql类型,则可以从数据库中获取与dbsql类型相匹配的组件编排模板,若待部署组件的组件类型为product类型,则可以从数据库中获取与product类型相匹配的组件编排模板。
进一步的,产品部署设备基于组件编排模板生成每个待部署产品中包括的待部署组件的组件编排文件,可以包括:获取每个待部署产品中包括的待部署组件的物料信息,待部署组件的物料信息包括:待部署组件的组件标识以及待部署组件对应的组件部署操作信息;将每个待部署产品中包括的待部署组件的组件标识写入至组件编排模板的组件标识字段中,以及将每个待部署产品中包括的待部署组件对应的组件部署操作信息写入至组件编排模板的组件部署操作信息字段中,得到每个待部署产品中包括的待部署组件的组件编排文件。其中,待部署组件的物料信息是由部署视图前端发送至产品部署设备中的,可选的,可以以树形结构的方式将一个待部署产品的所有组件的物料信息发送至产品部署设备,产品部署设备从接收到的该待部署产品的所有组件的物料信息中提取得到该待部署产品中包括的所有待部署组件的物料信息。例如,可以设计一棵业务树来对待部署产品的所有组件的物料信息进行存储,其中一个待部署产品对应的业务树的根节点代表该待部署产品的待部署版本,该业务树的一个叶子节点代表该待部署产品的一个组件的待部署版本。进一步的,产品部署设备基于组件编排模板生成每个待部署产品中包括的待部署组件的组件编排文件时,还可以得到每个待部署产品中包括的待部署组件的组件编排文件的标识(称作组件编排文件标识)。
S503,获取产品编排模板,并基于产品编排模板以及每个待部署产品中包括的待部署组件的组件编排文件,对每个待部署产品中包括的待部署组件进行部署编排,生成每个待署产品对应的产品编排文件。
在一个实施例中,产品编排模板包括产品标识字段以及组件编排文件字段,产品标识字段可以用于填充待部署产品的产品标识,组件编排文件字段可以用于填充待部署产品中包括的待部署组件的组件编排文件,其中,一个待部署产品中包括的所有待部署组件的组件部署操作信息可以反映该待部署产品的产品部署操作。可选的,组件编排文件字段还可以用于填充待部署产品中包括的待部署组件的组件编排文件的标识(即组件编排文件标识)。
具体实现中,产品部署设备基于产品编排模板以及每个待部署产品中包括的待部署组件的组件编排文件,对每个待部署产品中包括的待部署组件进行部署编排,生成每个待署产品对应的产品编排文件,可以包括:获取每个待部署产品对应的组件部署序配置文件,每个待部署产品对应的组件部署序配置文件用于指示每个待部署产品中包括的每个待部署组件的组件部署顺序;将每个待部署产品的产品标识,写入至产品编排模板的产品标识字段中,以及将每个待部署产品中包括的每个待部署组件的组件编排文件,分别按照每个待部署产品中包括的每个待部署组件的组件部署顺序,依次写入至产品编排模板的组件编排文件字段中,得到每个待署产品对应的产品编排文件。其中,待部署产品对应的组件部署序配置文件可以指示该待部署产品的多个组件中,每个组件的组件部署顺序,由于该待部署产品中包括的待部署组件是从该待部署产品的多个组件中确定出的,所以该待部署产品对应的组件部署序配置文件可以用于指示该待部署产品中包括的每个待部署组件的组件部署顺序。举例来说,若待部署产品为云产品A,云产品A的组件为组件1、组件2以及组件3,基于云产品A的多个组件(组件1、组件2以及组件3)确定出的云产品A中包括的待部署组件为组件2以及组件3,若该待部署产品对应的组件部署序配置文件中指示该待部署产品的多个组件的组件部署顺序先后依次为组件1、组件2以及组件3,那么该待部署产品中包括的待部署组件的组件部署顺序先后依次为组件2以及组件3。进一步的,产品部署设备基于产品编排模板以及每个待部署产品中包括的待部署组件的组件编排文件,对每个待部署产品中包括的待部署组件进行部署编排,生成每个待署产品对应的产品编排文件时,还可以得到每个待部署产品对应的产品编排文件的标识(称作产品编排文件标识)。
可选的,产品部署设备在生成每个待部署产品对应的产品编排文件时,可以依次生成每个待部署产品对应的一个或多个组件级特殊操作,其中,一个待部署产品对应的一个或多个组件级特殊操作指的是在部署该待部署产品中包括的一个或多个待部署组件时所需要执行的除组件部署操作之外的操作。
在一个实施例中,产品部署设备在生成每个待部署产品对应的产品编排文件之后,可以将每个待部署产品对应的产品编排文件和该待部署产品集的此次部署对应的部署工作组标识进行绑定,并存储至数据库中,以便于后续有需要时从数据库中对待部署产品对应的产品编排文件进行获取。
在一个实施例中,产品部署设备在生成每个待部署产品对应的产品编排文件之后,可以在部署全局表中存入每个待部署产品的当前部署状态,为未执行,以及存入每个待部署产品中的每个待部署组件的当前部署状态,为未执行。
在一个实施例中,以生成一个待部署产品对应的产品编排文件为例,如图7所示,为本申请实施例提供的一种生成产品编排文件的示意图,产品部署设备响应于部署请求,获取待部署产品的多个组件以及每个组件的待部署版本;将该待部署产品的多个组件中,待部署版本与环境部署版本不相同的组件确定为该待部署产品中包括的待部署组件;获取与该待部署产品中包括的待部署组件的组件类型相匹配的组件编排模板,获取该待部署产品中包括的待部署组件的物料信息;将该待部署产品中包括的待部署组件的组件标识写入至组件编排模板的组件标识字段中,以及将该待部署产品中包括的待部署组件对应的组件部署操作信息写入至组件编排模板的组件部署操作信息字段中,得到该待部署产品中包括的待部署组件的组件编排文件;获取该待部署产品对应的组件部署序配置文件;将该待部署产品的产品标识,写入至产品编排模板的产品标识字段中,以及将该待部署产品中包括的每个待部署组件的组件编排文件,分别按照该待部署产品中包括的每个待部署组件的组件部署顺序,依次写入至产品编排模板的组件编排文件字段中,得到该待署产品对应的产品编排文件。
在一个实施例中,当产品部署设备中包括部署引擎以及流程编排引擎时;由部署引擎接收部署视图前端发送的针对待部署产品集的部署请求;如图8所示,为本申请提供的一种分配部署工作标识的示意图,部署引擎接收到部署视图前端发送的针对待部署产品集的部署请求之后,可以为该待部署产品集的此次部署分配一个部署工作组标识,并将该分配的部署工作标识作为该待部署产品集的此次部署的数据库主键,将分配的部署工作组标识返回至部署视图前端中。例如,若分配的部署工作标识为1(即JobGroupID=1,则将JobGroupID=1返回至部署视图前端中)。
进一步的,如图9所示,为本申请实施例提供的另一种生成产品编排文件的示意图,部署视图前端接收到部署引擎返回的该待部署产品集的此次部署对应的部署工作标识后,可以发送产品编排文件生成请求至部署引擎中,该产品编排文件生成请求用于请求部署引擎生成待部署产品集中每个待部署产品对应的产品编排文件,该产品编排文件生成请求可以携带待部署产品集中各个待部署产品的多个组件的物料信息;以生成一个待部署产品对应的产品编排文件为例,部署引擎接收到产品编排文件生成请求后,可以获取待部署产品的多个组件以及每个组件的待部署版本;将该待部署产品的多个组件中,待部署版本与环境部署版本不相同的组件确定为该待部署产品中包括的待部署组件,并发送组件编排文件生成请求至流程编排引擎中,该组件编排文件生成请求用于请求流程编排引擎生成该待部署产品中包括的待部署组件的组件编排文件,该组件编排文件生成请求中携带该待部署产品中包括的待部署组件的组件类型。
流程编排引擎接收到组件编排文件生成请求后,可以获取与该待部署产品中包括的待部署组件的组件类型相匹配的组件编排模板,获取该待部署产品中包括的待部署组件的物料信息;将该待部署产品中包括的待部署组件的组件标识写入至组件编排模板的组件标识字段中,以及将该待部署产品中包括的待部署组件对应的组件部署操作信息写入至组件编排模板的组件部署操作信息字段中,得到该待部署产品中包括的待部署组件的组件编排文件,并将得到的该待部署产品中包括的待部署组件的组件编排文件返回至部署引擎中。部署引擎可以获取该待部署产品对应的组件部署序配置文件;将该待部署产品的产品标识,写入至产品编排模板的产品标识字段中,以及将该待部署产品中包括的每个待部署组件的组件编排文件,分别按照该待部署产品中包括的每个待部署组件的组件部署顺序,依次写入至产品编排模板的组件编排文件字段中,得到该待署产品对应的产品编排文件;针对每个待部署产品执行上述生成产品编排文件的过程,得到每个待部署产品对应的产品编排文件;部署引擎得到每个待部署产品对应的产品编排文件之后,可以向部署视图前端发送产品编排文件生成结束的提示信息。
在一个实施例中,以生成一个待部署产品对应的产品编排文件为例,如图10所示,为本申请实施例提供的另一种生成产品编排文件的示意图,产品部署设备响应于部署请求,获取待部署产品的多个组件以及每个组件的待部署版本,获取与该待部署产品的每个组件的组件类型相匹配的组件编排模板,获取该待部署产品的每个组件的物料信息;将该待部署产品的每个组件的组件标识写入至组件编排模板的组件标识字段中,以及将该待部署产品的每个组件对应的组件部署操作信息写入至组件编排模板的组件部署操作信息字段中,得到该待部署产品的每个组件的组件编排文件;将该待部署产品的多个组件中,待部署版本与环境部署环境版本不相同的组件确定为该待部署产品中包括的待部署组件,并筛选得到待部署产品中包括的待部署组件的组件编排文件;获取该待部署产品对应的组件部署序配置文件;将该待部署产品的产品标识,写入至产品编排模板的产品标识字段中,以及将该待部署产品中包括的每个待部署组件的组件编排文件,分别按照该待部署产品中包括的每个待部署组件的组件部署顺序,依次写入至产品编排模板的组件编排文件字段中,得到该待署产品对应的产品编排文件。
在一个实施例中,当产品部署设备中包括部署引擎以及流程编排引擎时;如图11所示,为本申请实施例提供的另一种生成产品编排文件的示意图,部署视图前端接收到部署引擎返回的该待部署产品集的此次部署对应的部署工作标识后,可以发送产品编排文件生成请求至部署引擎中,该产品编排文件生成请求用于请求部署引擎生成待部署产品集中每个待部署产品对应的产品编排文件,该产品编排文件生成请求可以携带待部署产品集中各个待部署产品的多个组件的物料信息;以生成一个待部署产品对应的产品编排文件为例,部署引擎接收到产品编排文件生成请求后,可以获取待部署产品的多个组件以及每个组件的待部署版本,并发送组件编排文件生成请求至流程编排引擎中,该组件编排文件生成请求用于请求流程编排引擎生成该待部署产品的每个组件的组件编排文件,该组件编排文件生成请求中携带该待部署产品的每个组件的组件类型。
流程编排引擎接收到组件编排文件生成请求后,可以获取与该待部署产品的每个组件的组件类型相匹配的组件编排模板,获取该待部署产品的每个组件的物料信息;将该待部署产品的每个组件的组件标识写入至组件编排模板的组件标识字段中,以及将该待部署产品的每个组件对应的组件部署操作信息写入至组件编排模板的组件部署操作信息字段中,得到该待部署产品的每个组件的组件编排文件;并将得到的该待部署产品的每个组件的组件编排文件返回至部署引擎中。部署引擎可以将该待部署产品的多个组件中,待部署版本与环境部署环境版本不相同的组件确定为该待部署产品中包括的待部署组件,并筛选得到待部署产品中包括的待部署组件的组件编排文件;获取该待部署产品对应的组件部署序配置文件;将该待部署产品的产品标识,写入至产品编排模板的产品标识字段中,以及将该待部署产品中包括的每个待部署组件的组件编排文件,分别按照该待部署产品中包括的每个待部署组件的组件部署顺序,依次写入至产品编排模板的组件编排文件字段中,得到该待署产品对应的产品编排文件;针对每个待部署产品执行上述生成产品编排文件的过程,得到每个待部署产品对应的产品编排文件;部署引擎得到每个待部署产品对应的产品编排文件之后,可以向部署视图前端发送产品编排文件生成结束的提示信息。
S504,获取产品集编排模板,并基于产品集编排模板以及每个待部署产品对应的产品编排文件,对待部署产品集中包括的N个待部署产品进行部署编排,生成待部署产品集对应的部署编排文件。
在一个实施例中,产品集编排模板包括产品集标识字段以及产品编排文件字段,产品集标识字段可以用于填充待部署产品集的产品集标识,产品编排文件字段可以用于填充待部署产品对应的产品编排文件。可选的,产品编排文件字段还可以用于填充待部署产品对应的产品编排文件的标识(即产品编排文件标识)。
具体实现中,产品部署设备基于产品集编排模板以及每个待部署产品对应的产品编排文件,对待部署产品集中包括的N个待部署产品进行部署编排,生成待部署产品集对应的部署编排文件,可以包括:获取待部署产品集对应的产品部署序配置文件,产品部署序配置文件用于指示每个待部署产品的产品部署顺序;将待部署产品集的产品集标识,写入至产品集编排模板的产品集标识字段中,以及将每个待部署产品对应的产品编排文件,分别按照每个待部署产品的产品部署顺序,依次写入至产品集编排模板的产品编排文件字段中,得到待部署产品集对应的部署编排文件。产品部署设备基于产品集编排模板以及每个待部署产品对应的产品编排文件,对待部署产品集中包括的N个待部署产品进行部署编排,生成待部署产品集对应的部署编排文件时,还可以得到待部署产品集对应的部署编排文件的标识(称作部署编排文件标识)。
可选的,产品部署设备在生成待部署产品集对应的部署编排文件时,可以依次生成待部署产品集对应的一个或多个产品级特殊操作,其中,待部署产品集对应的一个或多个产品级特殊操作指的是:在部署该待部署产品集中包括的N个待部署产品时所需要执行的除组件部署操作和产品部署操作之外和产品部署操作同级的操作。
进一步的,产品部署设备在生成待署产品集对应的部署编排文件之后,可以将待部署产品集对应的部署编排文件和该待部署产品集的此次部署对应的部署工作组标识进行绑定,并存储至数据库中,以便于后续有需要时从数据库中对待部署产品集对应的部署编排文件进行获取。
在一个实施例中,当产品部署设备中包括部署引擎以及流程编排引擎时;如图12所示,为本申请实施例提供的一种生成部署编排文件的示意图;部署视图前端接收到部署引擎发送的产品编排文件生成结束的提示信息之后,可以向部署引擎发送部署编排文件生成请求,该部署编排文件生成请求用于请求部署引擎生成待部署产品集对应的部署编排文件,该部署编排文件生成请求可以携带该待部署产品集的此次部署对应的部署工作组标识;部署引擎接收到部署编排文件生成请求之后,可以基于部署编排文件生成请求中携带的该待部署产品集的此次部署对应的部署工作组标识,从数据库中获取待部署产品集的产品集标识以及该待部署产品集中包括的每个待部署产品所对应的产品编排文件,可选的,还可以获取每个待部署产品的产品名称;然后获取待部署产品集对应的产品部署序配置文件;调用流程编排引擎,将待部署产品集的产品集标识,写入至产品集编排模板的产品集标识字段中,以及将每个待部署产品对应的产品编排文件,分别按照每个待部署产品的产品部署顺序,依次写入至产品集编排模板的产品编排文件字段中,得到待部署产品集对应的部署编排文件。进一步的,部署引擎在生成待署产品集对应的部署编排文件之后,可以将待部署产品集对应的部署编排文件和该待部署产品集的此次部署对应的部署工作组标识进行绑定,并存储至数据库中,可以向部署视图前端发送部署编排文件生成结束的提示信息,以及向部署视图前端发送部署编排文件。
S505,获取待部署产品集对应的部署规划信息,并基于部署编排文件以及部署规划信息,对N个待部署产品进行部署。
其中,部署规划信息包括每个待部署产品的产品部署地址,以及每个待部署产品中包括的待部署组件的组件部署地址。其中,一个待部署产品的产品部署地址为预设环境中将该一个待部署产品进行部署的地址,一个待部署组件的组件部署地址为预设环境中将该一个待部署组件进行部署的地址,其中,一个待部署产品中包括的待部署组件的组件部署地址可以在该一个待部署产品的产品部署地址的地址范围内。
在一个实施例中,待部署产品集对应的部署规划信息可以是技术人员预先设定好并存储于数据库中的,产品部署设备可以从数据库中获取待部署产品集对应的部署规划信息。在另一个实施例中,待部署产品集对应的部署规划信息可以是由产品部署设备中包括的部署规划模块进行规划并生成的,产品部署设备可以从部署规划模块中获取待部署产品集对应的部署规划信息。
具体实现中,产品部署设备基于部署编排文件以及部署规划信息,对N个待部署产品进行部署,可以包括:基于部署编排文件中,每个待部署产品的产品部署顺序、每个待部署产品中包括的待部署组件的组件部署顺序以及部署规划信息,依次生成并执行待部署产品集中每个待部署组件对应的部署任务,一个部署任务用于指示将一个待部署组件部署在相应的组件部署地址中。其中,待部署组件对应的部署任务可以指示待部署组件的组件部署顺序也可以指示待部署组件的组件部署操作,举例来说,若待部署组件为组件2,部署组件2时需依次执行的组件部署操作分别为组件部署操作4、组件部署操作5以及组件部署操作6,则组件2对应的部署任务可以指示组件部署操作4、组件部署操作5以及组件部署操作6等组件部署操作。举例来说,若部署编排文件为如图4所示的部署编排文件,那么,产品部署设备会依次生成并执行组件2对应的部署任务、组件3对应的部署任务以实现对云产品A的部署;然后依次生成并执行组件4对应的部署任务以及组件5对应的部署任务以实现对云产品B的部署,然后生成并执行组件6对应的部署任务,以实现对云产品C的部署;进而实现对待部署产品集(云产品集A的部署)。
在一个实施例中,产品部署设备基于部署编排文件中,每个待部署产品的产品部署顺序、每个待部署产品中包括的待部署组件的组件部署顺序以及部署规划信息,依次生成并执行待部署产品集中每个待部署组件对应的部署任务时,可以基于部署编排文件中,每个待部署产品的产品部署顺序、每个待部署产品中包括的待部署组件的组件部署顺序,依次生成待部署产品集中每个待部署组件对应的组件编排实例,其中,待部署组件对应的组件编排实例为部署该待部署组件的可执行文件,一个待部署产品中包括的所有待部署组件所对应的组件编排实例构成了该待部署产品对应的产品编排实例,待部署产品集中包括的所有待部署产品所对应的产品编排实例构成了该待部署产品集对应的部署编排实例;进一步的,可以基于待部署产品集中每个待部署组件对应的组件编排实例以及部署规划信息依次生成并执行待部署产品集中每个待部署组件对应的部署任务。
在一个实施例中,当产品部署设备中包括部署引擎以及流程编排引擎时,产品部署设备依次生成并执行待部署产品集中每个待部署组件对应的部署任务,可以包括:调用流程编排引擎,基于部署编排文件中,每个待部署产品的产品部署顺序、每个待部署产品中包括的待部署组件的组件部署顺序以及部署规划信息,依次生成待部署产品集中每个待部署组件对应的部署任务;调用流程编排引擎按序将待部署产品集中每个待部署组件对应的部署任务传输至部署引擎;调用部署引擎按序执行所接收到的部署任务。具体实现中,调用流程编排引擎按序将待部署产品集中每个待部署组件对应的部署任务传输至部署引擎时,可以是基于超文本传输协议(HyperTextTransferProtocol,http)进行传输的。
进一步的,如图13所示,为本申请实施例提供的一种生成待部署组件对应的部署任务的示意图,部署视图前端在接收到部署编排文件生成结束的提示信息之后,可以发送部署任务生成第一请求至部署引擎中,该部署任务生成第一请求中可以携带该待部署产品集的此次部署对应的部署工作组标识;部署引擎接收到该部署任务生成第一请求之后,可以基于该部署任务生成第一请求中携带的该待部署产品集的此次部署对应的部署工作组标识从数据库中获取待部署产品集对应的部署编排文件,并发送部署任务生成请求至流程编排引擎中,该部署任务生成请求用于请求流程编排引擎生成待部署产品集中包括的待部署组件对应的部署任务,该部署任务生成请求中可以携带部署编排文件。流程编排引擎接收到部署任务生成请求之后,可以获取待部署产品集对应的部署规划信息,然后基于部署编排文件中,每个待部署产品的产品部署顺序、每个待部署产品中包括的待部署组件的组件部署顺序以及部署规划信息,依次生成待部署产品集中每个待部署组件对应的部署任务,并按序将待部署产品集中每个待部署组件对应的部署任务传输至部署引擎。部署引擎按序执行所接收到的部署任务。
进一步的,部署引擎可以包括一个或多个任务执行模块,每个任务执行模块对应一个任务关键信息;产品部署设备调用部署引擎按序执行所接收到的部署任务,可以包括:调用每个任务执行模块,监听部署引擎当前所接收到的目标部署任务所携带的关键信息;若一个或多个任务执行模块中的目标任务执行模块监听到,目标部署任务所携带的关键信息与目标任务执行模块对应的任务关键信息相匹配,则调用目标任务执行模块执行目标部署任务。其中,部署引擎中包括的一个或多个任务执行模块为用于执行待部署组件对应的部署任务的模块,例如可以包括物料准备模块、配置准备模块、节点准备模块以及部署执行模块等。举例来说,若部署引擎包括的任务执行模块分别为第一任务执行模块、第二任务执行模块、第三任务执行模块以及第四任务执行模块,若该四个任务执行模块对应的任务关键信息分别为key1、key2、key3以及key4,若部署引擎当前所接收到的目标部署任务为部署任务1,部署任务1所携带的关键信息为key1,则调用第一任务执行模块来执行该部署任务1,若部署引擎当前所接收到的目标部署任务为部署任务2,部署任务2所携带的关键信息为key3,则调用第三任务执行模块来执行该部署任务2。其中,部署引擎可以将当前所接收到的目标部署任务下发至任务队列中进行排队,并将当前所接收到的目标部署任务的部署执行状态改为未开始,以使一个或多个任务执行模块可以对任务队列中部署执行状态为未执行的目标部署任务进行监听;其中,任务队列可以基于关系型数据库管理系统mysql实现。
进一步的,一个或多个任务执行模块中的每个任务执行模块均可以包括多个模块副本,产品部署设备调用目标任务执行模块执行目标部署任务时,可以通过该目标任务执行模块中的多个模块副本对目标部署任务进行抢占执行,当该目标任务执行模块中的任一模块副本对目标部署任务抢占成功时,则可以修改该目标部署任务的部署执行状态为进行中,以防止该目标任务执行模块的其他模块副本对该目标部署任务进行二次抢占。具体实现中,通过该目标任务执行模块中的多个模块副本对目标部署任务进行抢占执行时,可以基于行级锁的方式进行抢占,例如可以基于行级锁中的for update的方式进行抢占。
在一个实施例中,部署引擎中的目标任务执行模块执行目标部署任务结束之后,会基于目标部署任务的执行结果更新目标部署任务的部署执行状态,例如,若目标部署任务的执行结果指示目标部署任务执行成功,则可以将目标部署任务的部署执行状态更新为已成功,若目标部署任务的执行结果指示目标部署任务执行失败,则可以将目标部署任务的部署执行状态更新为已失败,部署引擎可以将该目标部署任务的执行结果转发至流程编排引擎中,以使流程编排引擎发送目标部署任务的下一部署任务至部署引擎中。其中,任一部署任务的部署执行状态可以用部署执行状态字段表示,例如可以为taskStatus字段;可以设定该部署执行状态字段的不同取值表示不同的部署执行状态,例如,可以设定该部署执行状态字段为0时(即taskStatus=0时)表示部署执行状态为已成功,即部署任务已成功,该部署执行状态字段为1时表示部署执行状态为未开始,即部署任务未开始、该部署执行状态字段为2时表示部署执行状态为进行中,即部署任务进行中、该部署执行状态字段为3时表示部署执行状态为已失败,即部署任务已失败,例如,当目标部署任务的部署任务执行状态为已成功时,则可以更新该目标部署任务对应的部署任务执行状态字段为0。
在一个实施例中,部署引擎还可以包括任务引擎,可以基于任务引擎实现部署编排文件的生成,以及可以基于任务引擎与部署视图前端以及流程编排引擎进行交互,假设部署引擎包括第一任务执行模块、第二任务执行模块、第三任务执行模块以及第四任务执行模块,如图14所示,为本申请实施例提供的一种基于部署引擎中的任务执行模块执行部署任务的示意图,部署引擎中的任务引擎接收流程编排引擎发送的部署任务,并将当前接收到的部署任务作为目标部署任务;任务引擎将当前所接收到的目标部署任务下发至任务队列中进行排队,并将当前所接收到的目标部署任务的部署执行状态改为未开始;部署引擎调用每个任务执行模块,监听部署引擎当前所接收到的目标部署任务所携带的关键信息;若多个任务执行模块(第一任务执行模块、第二任务执行模块、第三任务执行模块以及第四任务执行模块)中的第一任务执行模块监听到,目标部署任务所携带的关键信息与第一任务执行模块对应的任务关键信息相匹配,则调用第一任务执行模块执行目标部署任务,并将目标部署任务的部署执行状态改为进行中;第一任务执行模块执行目标部署任务结束之后,可以基于目标部署任务的执行结果更新目标部署任务的部署执行状态,并将目标部署任务的执行结果发送至任务引擎中;任务引擎接收到目标部署任务的执行结果之后,可以将该目标部署任务的执行结果转发至流程编排引擎中;流程编排引擎接收到目标部署任务的执行结果之后,可以发送该目标部署任务的下一部署任务至任务引擎中,即发送该目标部署任务对应的待部署组件的下一个顺序执行的待部署组件所对应的部署任务至任务引擎中,重复执行上述过程,直至将待部署产品集中包括的所有待部署组件对应的部署任务均执行完毕,即直至完成对待部署产品集中包括的N个待部署产品的部署。
在一个实施例中,如图15所示,为本申请实施例提供的另一种基于产品部署系统进行部署的示意图,该产品部署系统中的产品部署设备中包括部署引擎、流程编排引擎,假设部署引擎包括任务引擎、第一任务执行模块、第二任务执行模块、第三任务执行模块以及第四任务执行模块,部署视图前端可以基于技术人员在部署触发渠道中执行的对N个待部署产品的部署触发操作,生成针对待部署产品集的部署请求,该待部署产品集是由该N个待部署产品构成的,并将生成的针对待部署产品集的部署请求发送至产品部署设备的部署引擎中,具体发送至部署引擎中的任务引擎中。任务引擎接收到针对待部署产品集的部署请求之后,可以响应于部署请求,创建待部署产品集对应的部署编排文件;然后任务引擎可以发送部署任务生成请求至产品部署设备的流程编排引擎中,该部署任务生成请求用于请求生成待部署产品集中包括的待部署组件对应的部署任务,该部署任务生成请求中可以携带部署编排文件。流程编排引擎接收到部署任务生成请求之后,可以获取待部署产品集对应的部署规划信息,然后基于部署编排文件中,每个待部署产品的产品部署顺序、每个待部署产品中包括的待部署组件的组件部署顺序以及部署规划信息,依次生成待部署产品集中每个待部署组件对应的部署任务,并按序将待部署产品集中每个待部署组件对应的部署任务传输至部署引擎,具体传输至部署引擎中的任务引擎中。任务引擎将当前所接收到的目标部署任务下发至任务队列中进行排队,并将当前所接收到的目标部署任务的部署执行状态改为未开始;部署引擎调用每个任务执行模块,监听部署引擎当前所接收到的目标部署任务所携带的关键信息;若多个任务执行模块(第一任务执行模块、第二任务执行模块、第三任务执行模块以及第四任务执行模块)中的第一任务执行模块监听到,目标部署任务所携带的关键信息与第一任务执行模块对应的任务关键信息相匹配,则调用第一任务执行模块执行目标部署任务,并将目标部署任务的部署执行状态改为进行中;第一任务执行模块执行目标部署任务结束之后,可以基于目标部署任务的执行结果更新目标部署任务的部署执行状态,并将目标部署任务的执行结果发送至任务引擎中;任务引擎可以发送目标部署任务的部署结果以及部署执行状态值部署视图前端中,以使技术人员可以通过部署视图前端了解到目标部署任务的执行结果以及部署执行状态。
在一个实施例中,如图16所示,为本申请实施例提供的另一种基于产品部署系统进行部署的示意图,该产品部署系统中的产品部署设备中包括部署引擎、流程编排引擎以及部署规划模块,假设部署引擎包括任务引擎、第一任务执行模块、第二任务执行模块、第三任务执行模块以及第四任务执行模块,部署视图前端可以基于技术人员在部署触发渠道中执行的对N个待部署产品的部署触发操作,生成针对待部署产品集的部署请求,该待部署产品集是由该N个待部署产品构成的,并将生成的针对待部署产品集的部署请求发送至产品部署设备的部署引擎中,具体发送至部署引擎中的任务引擎中。任务引擎接收到针对待部署产品集的部署请求之后,可以响应于部署请求,创建待部署产品集对应的部署编排文件;然后任务引擎可以发送实例生成请求至产品部署设备的流程编排引擎中,该实例生成请求用于请求生成待部署产品集中包括的待部署组件对应的组件编排实例,该实例任务生成请求中可以携带部署编排文件。流程编排引擎接收到实例任务生成请求之后,可以基于部署编排文件中,每个待部署产品的产品部署顺序、每个待部署产品中包括的待部署组件的组件部署顺序,依次生成待部署产品集中每个待部署组件对应的组件编排实例,并按序将待部署产品集中每个待部署组件对应的组件编排实例传输至部署引擎,具体传输至部署引擎中的任务引擎中。任务引擎基于当前接收到的目标组件编排实例以及从部署规划模块中获取到的部署规划信息生成当前所接收到的目标组件编排实例对应的目标部署任务,然后将目标部署任务下发至任务队列中进行排队,并将目标部署任务的部署执行状态改为未开始;部署引擎调用每个任务执行模块,监听部署引擎当前所接收到的目标部署任务所携带的关键信息;若多个任务执行模块(第一任务执行模块、第二任务执行模块、第三任务执行模块以及第四任务执行模块)中的第一任务执行模块监听到,目标部署任务所携带的关键信息与第一任务执行模块对应的任务关键信息相匹配,则调用第一任务执行模块执行目标部署任务,并将目标部署任务的部署执行状态改为进行中;第一任务执行模块执行目标部署任务结束之后,可以基于目标部署任务的执行结果更新目标部署任务的部署执行状态,并将目标部署任务的执行结果发送至任务引擎中;任务引擎可以发送目标部署任务的部署结果以及部署执行状态值部署视图前端中,以使技术人员可以通过部署视图前端了解到目标部署任务的执行结果以及部署执行状态。
本申请实施例中,产品部署设备在接收到针对待部署产品集的部署请求之后,可以响应于部署请求,基于组件编排模板生成每个待部署产品中包括的待部署组件的组件编排文件;基于产品编排模板以及每个待部署产品中包括的待部署组件的组件编排文件,对每个待部署产品中包括的待部署组件进行部署编排,生成每个待署产品对应的产品编排文件;基于产品集编排模板以及每个待部署产品对应的产品编排文件,对待部署产品集中包括的N个待部署产品进行部署编排,生成待部署产品集对应的部署编排文件,部署编排文件可以用于指示:每个待部署产品的产品部署顺序以及产品部署操作,以及每个待部署产品中包括的待部署组件的组件部署顺序以及组件部署操作;然后可以基于部署编排文件中,每个待部署产品的产品部署顺序、每个待部署产品中包括的待部署组件的组件部署顺序以及部署规划信息,依次生成并执行待部署产品集中每个待部署组件对应的部署任务,进而实现对N个待部署产品的部署,可提高待部署产品的部署效率,特别是可提高在需要对多个待部署产品进行部署时的部署效率。
基于上述产品部署系统以及产品部署方法,本申请实施例提供了另一种产品部署方法。参见图17,为本申请实施例提供的另一种产品部署方法的流程示意图。图17所示的产品部署方法可通过产品部署设备执行。图17所示的产品部署方法可包括如下步骤:
S1701,接收针对待部署产品集的部署请求。
S1702,响应于部署请求,获取组件编排模板,并基于组件编排模板生成每个待部署产品中包括的待部署组件的组件编排文件。
S1703,获取产品编排模板,并基于产品编排模板以及每个待部署产品中包括的待部署组件的组件编排文件,对每个待部署产品中包括的待部署组件进行部署编排,生成每个待署产品对应的产品编排文件。
在一个实施例中,产品部署设备基于产品编排模板以及每个待部署产品中包括的待部署组件的组件编排文件,对每个待部署产品中包括的待部署组件进行部署编排,生成每个待署产品对应的产品编排文件时,还可以得到每个待部署产品对应的产品编排文件的标识(称作产品编排文件标识)。进一步的,可以在数据库中创建产品编排文件创建记录表来对每个待部署产品对应的产品编排文件标识进行存储。如图18所示,为本申请实施例提供的一种产品编排文件创建记录表的示意图,其中,数据库的库名可以设置为db_tce_deployment_engine,产品编排文件创建记录表的表名可以设置为t_storage_product_template,产品编排文件创建记录表的主键为产品名称和该待部署产品集的此次部署对应的部署工作组标识的组合,其对应的字段可以用porductJobGroupId表示,该字段的取值有表示产品名称的字段的取值(即InstanceName字段的取值)以及表示部署工作组标识的字段的取值(即JobGroupId字段的取值)共同构成,例如,可以为InstanceName_JobGroupId,若InstanceName为Tcenter-0,JobGroupId为1,则porductJobGroupId可以为Tcenter-0_1;该产品编排文件创建记录表还可以包括产品名称,其对应的字段为productInstanceName,例如可以为Tcenter-0;还可以包括产品编排文件标识,其对应的字段为templateUUID,可选的,还可以包括部署触发渠道信息,其字段为triggerSource,例如可以为CICD,表明部署触发渠道为CICD触发部署。产品编排文件创建记录表中各个字段的数据类型可以由图18中给出。
S1704,获取产品集编排模板,并基于产品集编排模板以及每个待部署产品对应的产品编排文件,对待部署产品集中包括的N个待部署产品进行部署编排,生成待部署产品集对应的部署编排文件。
S1705,创建待部署产品集对应的产品集部署进度树。
其中,产品集部署进度树中包括一个或多个节点,产品集部署进度树中的一个节点代表一个待部署产品的部署状态或一个待部署组件的部署状态。
在一个实施例中,产品部署设备在生成每个待部署产品对应的产品编排文件之后,还可以创建每个待部署产品对应的产品部署进度树,其中,一个待部署产品对应的产品部署进度树的根节点代表该待部署产品的部署状态,该产品部署进度树的叶子节点代表该待部署产品中包括的待部署组件的部署状态。进一步的,产品部署设备在创建每个待部署产品对应的产品部署进度树时,可以初始化每个待部署产品对应的产品部署进度树中的节点所代表的部署状态为未执行。进一步的,产品部署设备在生成待部署产品集对应的部署编排文件之后,可以基于每个待部署产品对应的产品部署进度树生成该待部署产品集对应的产品集部署进度树。其中产品集部署进度树中包括一个或多个节点,产品集部署进度树中的根节点代表该待部署产品集的部署状态,产品集部署进度树中除根节点以外的其余节点中的一个节点代表一个待部署产品的部署状态或一个待部署组件的部署状态。进一步的,产品部署设备在创建待部署产品集对应的产品集部署进度树时,可以初始化产品集部署进度树中的节点所代表的部署状态为未执行。其中,可以预先设定待部署产品集在进行部署的过程中所涉及的各种部署状态,例如可以包括未执行(可以用init表示)、已成功(可以用success表示)、已失败(可以用failure表示)、进行中(可以用running表示)、停止中(可以用stopping表示)以及已停止(可以用stopped表示)。
举例来说,若待部署产品集对应的部署编排文件为如图4所示的部署编排文件,则该待部署产品集对应的初始化后的产品集部署进度树可以如图19所示,其中,产品集部署进度树的根节点代表待部署产品集的部署状态,根节点的下一层节点代表待部署产品集中的待部署产品的部署状态,再下一层节点代表待部署产品集中的待部署组件的部署状态,如图19所示的产品集部署进度树包括9个节点,分别为节点1、节点2、节点3、节点4、节点5、节点6、节点7、节点8以及节点9,其中产品集部署进度树的根节点(节点1)代表云产品集A的部署状态为未执行,根节点的下一层节点分别为节点2、节点3以及节点4,分别代表云产品A的部署状态为未执行、云产品B的部署状态为未执行以及云产品C的部署状态为未执行;节点2的子节点分别为节点5以及节点6,分别代表组件2的部署状态为未执行以及组件3的部署状态为未执行,节点3的子节点分别为节点7以及节点8,分别代表组件4的部署状态为未执行以及组件5的部署状态为未执行,节点4的子节点为节点9,代表组件6的部署状态为未执行。
在一个实施例中,可以在数据库中创建部署进度树存储表来对创建的产品集部署进度树进行存储。如图20所示,为本申请实施例提供的一种部署进度树存储表的示意图,其中,数据库的库名可以设置为db_tce_deployment_engine,部署进度树存储表的表名可以设置为t_deployment_progress_tree。部署进度树存储表的主键为部署工作组标识,其对应的字段为JobGroupId,例如可以为1,其中一个JobGroupId的取值对应一颗完整的产品集部署进度树;还可以包括组件编排实例的标识(称为组件编排实例标识),其对应的字段为instanceUUID;还可以包括编排文件标识(例如可以包括产品编排文件标识或部署编排文件标识),其对应的字段为templateUUID;还可以包括产品集部署进度树,其对应的字段为deployProgressTree,还可以包括产品集部署进度树状态,其对应的字段为treeStatus,例如可以为未执行(表示为treeStatus=init)、已成功(表示为treeStatus=success)、已失败(表示为treeStatus=failure)、进行中(表示为treeStatus=running)、停止中(表示为treeStatus=stopping)以及已停止(表示为treeStatus=stopped)等,其中产品集部署进度树状态与该产品集部署进度树对应的待部署产品集的部署状态是一致的;还可以包括该产品集部署进度树的创建时间,其对应的字段可以为timeCreate;还可以包括最近一次更新该产品集部署进度树的更新时间,其对应的字段可以为timeUpdate;还可以包括部署触发渠道信息,其对应的字段为triggerSource;还可以包括物料信息,其对应的字段为MaterialAbstract。其中,部署进度树存储表中各个字段对应的数据类型均在图12中给出,其中,产品集部署进度树对应的数据类型中的mediumtext为一种字符串类型,物料信息对应的字段的数据类型可以包括文本类型(即text类型)。
S1706,获取待部署产品集对应的部署规划信息,并基于部署编排文件以及部署规划信息,对N个待部署产品进行部署。
在一个实施例中,产品部署设备基于部署编排文件以及部署规划信息,对N个待部署产品进行部署时,可以基于部署编排文件中,每个待部署产品的产品部署顺序、每个待部署产品中包括的待部署组件的组件部署顺序以及部署规划信息,依次生成并执行待部署产品集中每个待部署组件对应的部署任务,其中,一个部署任务用于指示将一个待部署组件部署在相应的组件部署地址中。进一步的,产品部署设备在生成待部署产品集中每个待部署组件对应的部署任务之后,可以创建部署任务表来对生成的部署任务的相关信息进行存储。如图21所示,为本申请实施例提供的一种部署任务表的示意图,其中,数据库的库名可以设置为db_tce_deployment_engine,部署任务表的表名可以设置为t_async_task。部署任务表的主键为部署任务的标识(即部署任务标识),其对应的字段为taskId,例如可以为1;可以包括部署任务的部署执行状态,其对应的字段为taskStatus,例如可以为已成功(表示为taskStatus=0)、未开始(表示为taskStatus=1、进行中(表示为taskStatus=2)以及已失败(表示为taskStatus=3),还可以包括部署任务名称(其对应字段为taskName)、部署任务报错信息(其对应的字段为taskName)、部署任务子步骤游标进度(其对应的字段为taskCursor)、执行部署任务的任务执行模块信息(其对应的字段为taskWorker)、部署任务创建时间(其对应的字段为timeCreate)、部署任务开始时间(其对应的字段为timeStart)、部署任务结束时间(其对应的字段为timeEnd)、部署任务的相关参数(其对应的字段为parameters)、组件编排实例标识(其对应的字段为instanceUUID)以及部署任务子步骤列表(其对应的字段为steps)。其中,部署任务表中各个字段的数据类型由图21给出,表示部署执行状态的字段(即taskStatus字段)中包括的最大长度为11位的整型(即int(11))。其中,执行一个部署任务时,可以包括一个或多个子步骤,部署任务子步骤游标进度表示执行部署任务的子步骤的进度,一开始是0,每完成一个子步骤,就增加1;部署任务子步骤列表可以表示子步骤的相关信息,例如子步骤的执行结果、开始时间、结束时间等;可选的,部署任务子步骤列表可以以list格式进行存储。举例来说,部署任务的一个子步骤列表可以如下所示:
[{"code":0,//子步骤结果(0-成功,其他-失败)。
"message":"ok",//子步骤报错信息。
"timeStart":"2019-06-30 14:55:32",//子步骤开始时间。
"timeEnd":"2019-06-30 15:55:48",//子步骤结束时间。
"command":"stop_mod",//子步骤命令。
"retryLimit":3,//子步骤重试次数上限。
"retryTimes":0//子步骤重试次数累计。},
{"code":0,"message":"","timeStart":null,"timeEnd":null,"command":"start_mod","retryLimit":2,"retryTimes":0}]
在一个实施例中,产品部署设备基于部署编排文件中,每个待部署产品的产品部署顺序、每个待部署产品中包括的待部署组件的组件部署顺序以及部署规划信息,依次生成并执行待部署产品集中每个待部署组件对应的部署任务时,可以基于部署编排文件中,每个待部署产品的产品部署顺序、每个待部署产品中包括的待部署组件的组件部署顺序,依次生成待部署产品集中每个待部署组件对应的组件编排实例;进一步的,可以基于待部署产品集中每个待部署组件对应的组件编排实例以及部署规划信息依次生成并执行待部署产品集中每个待部署组件对应的部署任务。进一步的,产品部署设备在生成每个待部署组件对应的组件编排实例后,可以将该待部署产品集对应的产品集部署进度树的产品集部署进度树状态确定为运行中,以使产品部署设备可以对产品集部署进度树状态为运行中的产品集部署进度树进行更新,以更新产品集部署进度树中各个节点所代表的部署状态。
S1707,遍历产品集部署进度树,将产品集部署进度树中未被遍历的任一节点作为当前遍历的目标节点。
S1708,获取目标节点所代表的待部署产品或待部署组件的当前部署状态,并当获取到的当前部署状态与目标节点所代表的部署状态不同时,用获取到的当前部署状态更新目标节点所代表的部署状态。
具体实现中,产品部署设备遍历产品集部署进度树并对产品集部署进度树进行更新时,可以采取前序遍历、中序遍历、后序遍历以及层序遍历等遍历方式,本申请实施例不做限制。如图22a所示,为本申请实施例提供的一种更新产品集部署进度树的示意图,产品部署设备可以遍历产品集部署进度树,将产品集部署进度树中未被遍历的任一节点作为当前遍历的目标节点;获取目标节点所代表的待部署产品或待部署组件的当前部署状态;当获取到的当前部署状态与目标节点所代表的部署状态不同时,用获取到的当前部署状态更新目标节点所代表的部署状态,并将目标节点作为已被遍历的节点,并在产品集部署进度树未被遍历结束的条件下,重新确定目标节点(即判断产品集部署进度树是否被遍历结束,若产品集部署进度树未被遍历结束,则重复执行将产品集部署进度树中未被遍历的任一节点作为当前遍历的目标节点的操作);当获取到的当前部署状态与目标节点所代表的部署状态相同时,将目标节点作为已被遍历的节点,并在产品集部署进度树未被遍历结束的条件下,重新确定目标节点;直至对产品集部署进度树遍历结束,得到更新后的产品集部署进度树。可选的,产品部署设备获取目标节点所代表的待部署产品或待部署组件的当前部署状态时,若获取到的当前部署状态不为该目标节点所代表的待部署产品或待部署组件的当前部署状态,则报错退出,结束对该产品集部署进度树的此次更新。
在一个实施例中,如图22b所示,为本申请实施例提供的另一种更新产品集部署进度树的示意图,产品部署设备遍历产品集部署进度树时,可以先遍历用于代表待部署产品的部署状态的节点(可以称为产品节点);产品部署设备可以将产品集部署进度树中未被遍历的任一产品节点作为当前遍历的目标产品节点;并获取该目标产品节点所代表的待部署产品的部署状态;当获取到的当前部署状态与目标产品节点所代表的部署状态不同时,用获取到的当前部署状态更新目标产品节点所代表的部署状态,并确定该目标产品节点是否满足深层遍历条件;当获取到的当前部署状态与目标产品节点所代表的部署状态相同时,确定该目标产品节点是否满足深层遍历条件;若该目标产品节点不满足深层遍历条件,则将该目标产品节点作为已被遍历的产品节点,并在产品集部署进度树中的产品节点未被遍历结束的条件下,重新确定目标产品节点(即重复执行将产品集部署进度树中未被遍历的任一产品节点作为当前遍历的目标产品节点的操作);若该目标产品节点满足深层遍历条件,则对该目标产品节点的子节点进行遍历,并更新目标产品节点的子节点的部署状态。其中,当获取到的当前部署状态与目标产品节点所代表的部署状态不同时,深层遍历条件包括:该目标产品节点存在子流程,即该目标产品节点存在子节点;当获取到的当前部署状态与目标产品节点所代表的部署状态相同时,深层遍历条件包括:该目标产品节点存在子流程,即该目标产品节点存在子节点,且该目标产品节点所代表的部署状态为进行中或停止中。直至对产品集部署进度树遍历结束,得到更新后的产品集部署进度树。
在一个实施例中,产品部署设备当获取到的当前部署状态与目标节点所代表的部署状态不同时,用获取到的当前部署状态更新目标节点所代表的部署状态之后,还可以将更新部署全局表中该目标节点所代表的待部署产品或待部署组件的当前部署状态以及部署历史表中该目标节点所代表的待部署产品或待部署组件的当前部署状态。其中,可以基于部署历史表获取组件的所有部署触发渠道的部署历史,以及获取最新的产品集部署进度树的结构。如图23所示,为本申请实施例提供的一种部署历史表的示意图,该部署历史表中可以包括组件编排实例标识,其对应的字段为instanceUUID,组件编排实例标识对应的部署编排实例的标识(称为部署编排实例标识),其对应的字段为rootInstanceUUID;部署历史表中包括的各个字段以及各个字段的数据类型由图23给出。
在一个实施例中,当产品部署设备中包括部署引擎以及流程编排引擎时,可以调用部署引擎实现对产品集部署进度树的更新,部署引擎可以从流程编排引擎中获取目标节点所代表的待部署产品或待部署组件的当前部署状态。可选的,可以设置一个或多个更新线程来对产品集部署进度树进行更新,例如可以设置一个或多个worker来对产品集部署进度树进行更新。如图24a所示,为本申请实施例提供的一种基于更新线程更新产品集部署进度树的示意图,当数据库中存储有多个待部署产品集对应的产品集部署进度树时,即数据库中存储有多个产品集部署进度树时,该一个或多个worker会获取产品集部署进度树状态为未执行或进行中的产品集部署进度树,并遍历该获取到的产品集部署进度树,将获取到的产品集部署进度树中未被遍历的任一节点作为当前遍历的目标节点,从流程编排引擎中获取目标节点所代表的待部署产品或待部署组件的当前部署状态,并当获取到的当前部署状态与目标节点所代表的部署状态不同时,用获取到的当前部署状态更新目标节点所代表的部署状态,直至完成对获取到的产品集部署进度树的遍历,得到更新后的产品集部署进度树,并用更新后的产品集部署进度树替换数据库中存储的原产品集部署进度树。具体实现中,若worker为多个,则多个worker之间通过标记抢占字段对一个产品集部署进度树的更新进行抢占,即多个worker中,优先对该抢占字段进行标记的worker对该产品集部署进度树抢占成功,即由该抢占成功的worker来对该产品集部署进度树进行更新,例如,可以将抢占字段置1表示抢占成功,即表示该产品集部署进度树已被抢占。进一步的,为了使数据库中存储的产品集部署进度树状态为未执行或进行中的产品集部署进度树可以被每个worker均匀的更新,即使每个worker抢占的产品集部署进度树的数量均匀,可以设置时间字段,根据时间倒序来更新产品集部署进度树。
在一个实施例中,如图24b所示,为本申请实施例提供的另一种基于更新线程更新产品集部署进度树的示意图;以一个更新线程(worker)为例,更新线程获取并抢占数据库中的部署进度树存储表中存储的产品集部署进度树状态为未执行或进行中的产品集部署进度树,将产品集部署进度树对应的抢占字段进行标记;更新线程遍历获取到的产品集部署进度树,更新线程遍历获取到的产品集部署进度树时,可以先遍历获取到的产品集部署进度树的产品节点;将获取到的产品集部署进度树中未被遍历的任一产品节点作为当前遍历的目标产品节点;并从流程编排引擎中获取该目标产品节点所代表的待部署产品的部署状态;当获取到的当前部署状态与目标产品节点所代表的部署状态不同时,用获取到的当前部署状态更新目标产品节点所代表的部署状态,并确定该目标产品节点是否满足深层遍历条件;当获取到的当前部署状态与目标产品节点所代表的部署状态相同时,确定该目标产品节点是否满足深层遍历条件;若该目标产品节点不满足深层遍历条件,则将该目标产品节点作为已被遍历的产品节点,并在产品集部署进度树中的产品节点未被遍历结束的条件下,重新确定目标产品节点;若该目标产品节点满足深层遍历条件,则对该目标产品节点的子节点进行遍历,并更新目标产品节点的子节点的部署状态。直至对获取到的产品集部署进度树遍历结束,得到更新后的产品集部署进度树。将更新后的产品集部署进度树发送至数据库中,替换数据库中存储的原产品集部署进度树。
在一个实施例中,由于数据库中存储有可以代表待部署产品集的部署状态、待部署产品集中包括的待部署产品的部署状态以及待部署产品集中包括的待部署组件的部署状态的产品集部署进度树,当部署前端视图在任意时刻向产品部署设备请求待部署产品集中包括的待部署产品以及待部署组件的部署状态时,产品部署设备可以从数据库中直接获取产品集部署进度树,并返回各个待部署产品以及待部署组件的部署状态至部署视图前端中。进一步的,部署视图前端在接收到产品部署设备返回的部署状态之后,可以在终端设备中进行显示,以使技术人员可以了解到该待部署产品集的部署进度,即可以了解到待部署产品集中任意待部署产品以及待部署组件的部署状态。举例来说,如图25所示,为本申请实施例提供的一种显示待部署产品集的部署进度的页面示意图,其中,如2501标记所示代表部署状态为已成功。
在一个实施例中,部署视图前端还可以在任意时刻向产品部署设备请求部署日志,通过对部署日志的显示可以使技术人员可以对待部署产品集的部署情况进行了解。假设产品部署设备中的部署引擎包括任务引擎、节点准备模块、物料准备模块、配置准备模块以及部署执行模块,如图26所示,为本申请实施例提供的一种部署视图前端获取部署日志的示意图,部署视图前端可以发送部署日志获取请求至产品部署设备中,具体可以发送至产品部署设备的任务引擎中;任务引擎可以从产品部署设备中用于存储部署日志的本地路径中获取部署日志,并返回至部署前端视图中。具体实现中,部署引擎中的部署任务执行模块可以从数据库中获取生成部署日志所需的部署日志物料,并基于获取到的部署日志物料生成部署日志。可选的,可以基于能实现命令远程执行的库来远程执行对部署日志物料的获取命令,以实现对部署日志物料的远程获取,例如可以基于paramiko库来实现命令远程执行,获取到的部署日志物料是基于标准输出获取到的,例如基于标准输出stdout。通过将任务引擎的目录和部署执行模块中存储有部署日志的目录挂载到产品部署设备中的同一路径中,任务引擎就可以基于该被挂载的产品部署设备中的同一路径获取部署日志,其中该被挂载的产品部署设备中的同一路径即未上述产品部署设备中用于存储部署日志的本地路径。
本申请实施例中,产品部署设备可以创建待部署产品集对应的产品集部署进度树,产品集部署进度树中包括一个或多个节点,产品集部署进度树中的一个节点代表一个待部署产品的部署状态或一个待部署组件的部署状态;遍历产品集部署进度树,将产品集部署进度树中未被遍历的任一节点作为当前遍历的目标节点;获取目标节点所代表的待部署产品或待部署组件的当前部署状态,并当获取到的当前部署状态与目标节点所代表的部署状态不同时,用获取到的当前部署状态更新目标节点所代表的部署状态;可以基于产品集部署进度树对待部署产品的部署状态以及待部署组件的部署状态进行存储,并可以进行实时更新,有利于对待部署产品集的部署进度的了解与掌控。
基于上述方法实施例,本申请实施例提供了一种产品部署装置。参见图27,为本申请实施例提供的一种产品部署装置的结构示意图,该产品部署装置可包括获取单元2701以及处理单元2702。图27所示的产品部署装置可运行如下单元:
获取单元2701,用于接收针对待部署产品集的部署请求,所述待部署产品集包括N个待部署产品,所述N个待部署产品中每个待部署产品包括待部署组件,N为正整数;
处理单元2702,用于响应于所述部署请求,创建所述待部署产品集对应的部署编排文件,所述部署编排文件用于指示:所述每个待部署产品的产品部署顺序以及产品部署操作,以及所述每个待部署产品中包括的待部署组件的组件部署顺序以及组件部署操作;
所述获取单元2701,还用于获取所述待部署产品集对应的部署规划信息;
所述处理单元2702,还用于基于所述部署编排文件以及所述部署规划信息,对所述N个待部署产品进行部署;所述部署规划信息包括所述每个待部署产品的产品部署地址,以及所述每个待部署产品中包括的待部署组件的组件部署地址。
在一个实施例中,所述处理单元2702创建所述待部署产品集对应的部署编排文件时,具体执行如下操作:
获取组件编排模板,并基于所述组件编排模板生成所述每个待部署产品中包括的待部署组件的组件编排文件;
获取产品编排模板,并基于所述产品编排模板以及所述每个待部署产品中包括的待部署组件的组件编排文件,对所述每个待部署产品中包括的待部署组件进行部署编排,生成所述每个待署产品对应的产品编排文件;
获取产品集编排模板,并基于所述产品集编排模板以及所述每个待部署产品对应的产品编排文件,对所述待部署产品集中包括的N个待部署产品进行部署编排,生成所述待部署产品集对应的部署编排文件。
在一个实施例中,所述组件编排模板包括组件标识字段以及组件部署操作信息字段;
所述处理单元2702基于所述组件编排模板生成所述每个待部署产品中包括的待部署组件的组件编排文件时,具体执行如下操作:
获取所述每个待部署产品中包括的待部署组件的物料信息,所述待部署组件的物料信息包括:所述待部署组件的组件标识以及所述待部署组件对应的组件部署操作信息;
将所述每个待部署产品中包括的待部署组件的组件标识写入至所述组件编排模板的组件标识字段中,以及将所述每个待部署产品中包括的待部署组件对应的组件部署操作信息写入至所述组件编排模板的组件部署操作信息字段中,得到所述每个待部署产品中包括的待部署组件的组件编排文件。
在一个实施例中,所述获取单元2701,还用于获取所述每个待部署产品中包括的待部署组件,所述每个待部署产品中包括的待部署组件的数量为一个或多个;
所述获取单元2701获取所述每个待部署产品中包括的待部署组件时,具体执行如下操作:
获取所述每个待部署产品的多个组件以及每个组件的待部署版本;
将所述每个待部署产品的多个组件中,待部署版本与环境部署版本不相同的组件确定为所述每个待部署产品中包括的待部署组件。
在一个实施例中,所述每个待部署产品中包括的待部署组件的数量为一个或多个,所述产品编排模板包括产品标识字段以及组件编排文件字段;
所述处理单元2702基于所述产品编排模板以及所述每个待部署产品中包括的待部署组件的组件编排文件,对所述每个待部署产品中包括的待部署组件进行部署编排,生成所述每个待署产品对应的产品编排文件时,具体执行如下操作:
获取所述每个待部署产品对应的组件部署序配置文件,所述每个待部署产品对应的组件部署序配置文件用于指示所述每个待部署产品中包括的每个待部署组件的组件部署顺序;
将所述每个待部署产品的产品标识,写入至所述产品编排模板的产品标识字段中,以及将所述每个待部署产品中包括的每个待部署组件的组件编排文件,分别按照所述每个待部署产品中包括的每个待部署组件的组件部署顺序,依次写入至所述产品编排模板的组件编排文件字段中,得到所述每个待署产品对应的产品编排文件。
在一个实施例中,所述产品集编排模板包括产品集标识字段以及产品编排文件字段;
所述处理单元2702基于所述产品集编排模板以及所述每个待部署产品对应的产品编排文件,对所述待部署产品集中包括的N个待部署产品进行部署编排,生成所述待部署产品集对应的部署编排文件时,具体执行如下操作:
获取所述待部署产品集对应的产品部署序配置文件,所述产品部署序配置文件用于指示所述每个待部署产品的产品部署顺序;
将所述待部署产品集的产品集标识,写入至所述产品集编排模板的产品集标识字段中,以及将所述每个待部署产品对应的产品编排文件,分别按照所述每个待部署产品的产品部署顺序,依次写入至所述产品集编排模板的产品编排文件字段中,得到所述待部署产品集对应的部署编排文件。
在一个实施例中,所述处理单元2702基于所述部署编排文件以及所述部署规划信息,对所述N个待部署产品进行部署时,具体执行如下操作:
基于所述部署编排文件中,所述每个待部署产品的产品部署顺序、所述每个待部署产品中包括的待部署组件的组件部署顺序以及所述部署规划信息,依次生成并执行所述待部署产品集中每个待部署组件对应的部署任务,一个部署任务用于指示将一个待部署组件部署在相应的组件部署地址中。
在一个实施例中,所述产品部署方法由产品部署设备执行,所述产品部署设备包括部署引擎以及流程编排引擎;
所述处理单元2702依次生成并执行所述待部署产品集中每个待部署组件对应的部署任务时,具体执行如下操作:
调用所述流程编排引擎,基于所述部署编排文件中,所述每个待部署产品的产品部署顺序、所述每个待部署产品中包括的待部署组件的组件部署顺序以及所述部署规划信息,依次生成所述待部署产品集中每个待部署组件对应的部署任务;
调用所述流程编排引擎按序将所述待部署产品集中每个待部署组件对应的部署任务传输至所述部署引擎;
调用所述部署引擎按序执行所接收到的部署任务。
在一个实施例中,所述部署引擎包括一个或多个任务执行模块,每个任务执行模块对应一个任务关键信息;所述处理单元2702调用所述部署引擎按序执行所接收到的部署任务时,具体执行如下操作:
调用所述每个任务执行模块,监听所述部署引擎当前所接收到的目标部署任务所携带的关键信息;
若所述一个或多个任务执行模块中的目标任务执行模块监听到,所述目标部署任务所携带的关键信息与所述目标任务执行模块对应的任务关键信息相匹配,则调用所述目标任务执行模块执行所述目标部署任务。
在一个实施例中,所述处理单元2702,还用于创建所述待部署产品集对应的产品集部署进度树,所述产品集部署进度树中包括一个或多个节点,所述产品集部署进度树中的一个节点代表一个待部署产品的部署状态或一个待部署组件的部署状态;
遍历所述产品集部署进度树,将所述产品集部署进度树中未被遍历的任一节点作为当前遍历的目标节点;
获取所述目标节点所代表的待部署产品或待部署组件的当前部署状态,并当获取到的当前部署状态与所述目标节点所代表的部署状态不同时,用所述获取到的当前部署状态更新所述目标节点所代表的部署状态。
根据本申请的一个实施例,图3、图5以及图17所示的产品部署方法所涉及各个步骤可以是由图27所示的产品部署装置中的各个单元来执行的。例如,图3所示的步骤S301可由图27所示的产品部署装置中的获取单元2701来执行,图3所示的步骤S302可由图27所示的产品部署装置中的处理单元2702来执行,图3所示的步骤S303可由图27所示的产品部署装置中的获取单元2701和处理单元2702共同执行。图5所示的步骤S501可由图27所示的产品部署装置中的获取单元2701来执行,图5所示的步骤S502至步骤S504可由图27所示的产品部署装置中的处理单元2702来执行,图5所示的步骤S505可由图27所示的产品部署装置中的获取单元2701和处理单元2702共同执行。图17所示的步骤S1701可由图27所示的产品部署装置中的获取单元2701来执行,图17所示的步骤S1702至步骤S1705以及步骤S1707至步骤S1708可由图27所示的产品部署装置中的处理单元2702来执行,图17所示的步骤S1706可由图27所示的产品部署装置中的获取单元2701和处理单元2702共同执行。
根据本申请的另一个实施例,图27所示的产品部署装置中的各个单元可以分别或全部合并为一个或若干个另外的单元来构成,或者其中的某个(些)单元还可以再拆分为功能上更小的多个单元来构成,这可以实现同样的操作,而不影响本申请的实施例的技术效果的实现。上述单元是基于逻辑功能划分的,在实际应用中,一个单元的功能也可以由多个单元来实现,或者多个单元的功能由一个单元实现。在本申请的其它实施例中,基于逻辑功能划分的产品部署装置也可以包括其它单元,在实际应用中,这些功能也可以由其它单元协助实现,并且可以由多个单元协作实现。
根据本申请的另一个实施例,可以通过在包括中央处理单元(CPU)、随机存取存储介质(RAM)、只读存储介质(ROM)等处理元件和存储元件的例如计算机的通用计算设备上运行能够执行如图3、图5以及图17所示的相应方法所涉及的各步骤的计算机程序(包括程序代码),来构造如图27中所示的产品部署装置,以及来实现本申请实施例产品部署方法。所述计算机程序可以记载于例如计算机可读存储介质上,并通过计算机可读存储介质装载于上述计算设备中,并在其中运行。
本申请实施例中,处理单元2702在获取单元2701接收到针对待部署产品集的部署请求之后,可以响应于部署请求,创建待部署产品集对应的部署编排文件;然后处理单元2702可以基于部署编排文件以及获取到的待部署产品集对应的部署规划信息,对待部署产品集中包括的N个待部署产品进行部署,其中,N为正整数,N个待部署产品中每个待部署产品包括待部署组件;部署编排文件用于指示:每个待部署产品的产品部署顺序以及产品部署操作,以及每个待部署产品中包括的待部署组件的组件部署顺序以及组件部署操作;部署规划信息包括每个待部署产品的产品部署地址,以及每个待部署产品中包括的待部署组件的组件部署地址。可以通过部署编排文件中指示的待部署产品的产品部署顺序,依次对待部署产品集中包括的N个待部署产品进行部署,以及可以通过部署编排文件中指示的每个待部署产品中包括的待部署组件的组件部署顺序,依次对每个待部署产品中包括的待部署组件进行部署,可以基于一次部署请求,实现对N个待部署产品的部署,可提高待部署产品的部署效率,特别是可提高在需要对多个待部署产品进行部署时的部署效率。
基于上述的方法实施例以及装置实施例,本申请还提供了一种产品部署设备。参见图28,为本申请实施例提供的一种产品部署设备的结构示意图。图28所示的产品部署设备可至少包括处理器2801、输入接口2802、输出接口2803以及计算机存储介质2804。其中,处理器2801、输入接口2802、输出接口2803以及计算机存储介质2804可通过总线或其他方式连接。
计算机存储介质2804可以存储在产品部署设备的存储器中,计算机存储介质2804用于存储计算机程序,计算机程序包括程序指令,处理器2801用于执行计算机存储介质2804存储的程序指令。处理器2801(或称CPU(Central Processing Unit,中央处理器))是产品部署设备的计算核心以及控制核心,其适于实现一条或多条指令,具体适于加载并执行一条或多条指令从而实现上述产品部署方法流程或相应功能。
本申请实施例还提供了一种计算机存储介质(Memory),计算机存储介质是产品部署设备中的记忆设备,用于存放程序和数据。可以理解的是,此处的计算机存储介质既可以包括终端中的内置存储介质,当然也可以包括终端所支持的扩展存储介质。计算机存储介质提供存储空间,该存储空间存储了终端的操作系统。并且,在该存储空间中还存放了适于被处理器2801加载并执行的一条或多条的指令,这些指令可以是一个或一个以上的计算机程序(包括程序代码)。需要说明的是,此处的计算机存储介质可以是高速随机存取存储器(random access memory,RAM)存储器,也可以是非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器;可选的还可以是至少一个位于远离前述处理器的计算机存储介质。
在一个实施例中,可由处理器2801以及输入接口2802加载并执行计算机存储介质中存放的一条或多条指令,以实现上述有关图3、图5以及图17的产品部署方法实施例中的方法的相应步骤,具体实现中,计算机存储介质中的一条或多条指令由处理器2801以及输入接口2802加载并执行如下步骤:
输入接口2802,用于接收针对待部署产品集的部署请求,所述待部署产品集包括N个待部署产品,所述N个待部署产品中每个待部署产品包括待部署组件,N为正整数;
处理器2801,用于响应于所述部署请求,创建所述待部署产品集对应的部署编排文件,所述部署编排文件用于指示:所述每个待部署产品的产品部署顺序以及产品部署操作,以及所述每个待部署产品中包括的待部署组件的组件部署顺序以及组件部署操作;
所述输入接口2802,还用于获取所述待部署产品集对应的部署规划信息;
所述处理器2801,还用于基于所述部署编排文件以及所述部署规划信息,对所述N个待部署产品进行部署;所述部署规划信息包括所述每个待部署产品的产品部署地址,以及所述每个待部署产品中包括的待部署组件的组件部署地址。
在一个实施例中,所述处理器2801创建所述待部署产品集对应的部署编排文件时,具体执行如下操作:
获取组件编排模板,并基于所述组件编排模板生成所述每个待部署产品中包括的待部署组件的组件编排文件;
获取产品编排模板,并基于所述产品编排模板以及所述每个待部署产品中包括的待部署组件的组件编排文件,对所述每个待部署产品中包括的待部署组件进行部署编排,生成所述每个待署产品对应的产品编排文件;
获取产品集编排模板,并基于所述产品集编排模板以及所述每个待部署产品对应的产品编排文件,对所述待部署产品集中包括的N个待部署产品进行部署编排,生成所述待部署产品集对应的部署编排文件。
在一个实施例中,所述组件编排模板包括组件标识字段以及组件部署操作信息字段;
所述处理器2801基于所述组件编排模板生成所述每个待部署产品中包括的待部署组件的组件编排文件时,具体执行如下操作:
获取所述每个待部署产品中包括的待部署组件的物料信息,所述待部署组件的物料信息包括:所述待部署组件的组件标识以及所述待部署组件对应的组件部署操作信息;
将所述每个待部署产品中包括的待部署组件的组件标识写入至所述组件编排模板的组件标识字段中,以及将所述每个待部署产品中包括的待部署组件对应的组件部署操作信息写入至所述组件编排模板的组件部署操作信息字段中,得到所述每个待部署产品中包括的待部署组件的组件编排文件。
在一个实施例中,所述输入接口2802,还用于获取所述每个待部署产品中包括的待部署组件,所述每个待部署产品中包括的待部署组件的数量为一个或多个;
所述输入接口2802获取所述每个待部署产品中包括的待部署组件时,具体执行如下操作:
获取所述每个待部署产品的多个组件以及每个组件的待部署版本;
将所述每个待部署产品的多个组件中,待部署版本与环境部署版本不相同的组件确定为所述每个待部署产品中包括的待部署组件。
在一个实施例中,所述每个待部署产品中包括的待部署组件的数量为一个或多个,所述产品编排模板包括产品标识字段以及组件编排文件字段;
所述处理器2801基于所述产品编排模板以及所述每个待部署产品中包括的待部署组件的组件编排文件,对所述每个待部署产品中包括的待部署组件进行部署编排,生成所述每个待署产品对应的产品编排文件时,具体执行如下操作:
获取所述每个待部署产品对应的组件部署序配置文件,所述每个待部署产品对应的组件部署序配置文件用于指示所述每个待部署产品中包括的每个待部署组件的组件部署顺序;
将所述每个待部署产品的产品标识,写入至所述产品编排模板的产品标识字段中,以及将所述每个待部署产品中包括的每个待部署组件的组件编排文件,分别按照所述每个待部署产品中包括的每个待部署组件的组件部署顺序,依次写入至所述产品编排模板的组件编排文件字段中,得到所述每个待署产品对应的产品编排文件。
在一个实施例中,所述产品集编排模板包括产品集标识字段以及产品编排文件字段;
所述处理器2801基于所述产品集编排模板以及所述每个待部署产品对应的产品编排文件,对所述待部署产品集中包括的N个待部署产品进行部署编排,生成所述待部署产品集对应的部署编排文件时,具体执行如下操作:
获取所述待部署产品集对应的产品部署序配置文件,所述产品部署序配置文件用于指示所述每个待部署产品的产品部署顺序;
将所述待部署产品集的产品集标识,写入至所述产品集编排模板的产品集标识字段中,以及将所述每个待部署产品对应的产品编排文件,分别按照所述每个待部署产品的产品部署顺序,依次写入至所述产品集编排模板的产品编排文件字段中,得到所述待部署产品集对应的部署编排文件。
在一个实施例中,所述处理器2801基于所述部署编排文件以及所述部署规划信息,对所述N个待部署产品进行部署时,具体执行如下操作:
基于所述部署编排文件中,所述每个待部署产品的产品部署顺序、所述每个待部署产品中包括的待部署组件的组件部署顺序以及所述部署规划信息,依次生成并执行所述待部署产品集中每个待部署组件对应的部署任务,一个部署任务用于指示将一个待部署组件部署在相应的组件部署地址中。
在一个实施例中,所述产品部署方法由产品部署设备执行,所述产品部署设备包括部署引擎以及流程编排引擎;
所述处理器2801依次生成并执行所述待部署产品集中每个待部署组件对应的部署任务时,具体执行如下操作:
调用所述流程编排引擎,基于所述部署编排文件中,所述每个待部署产品的产品部署顺序、所述每个待部署产品中包括的待部署组件的组件部署顺序以及所述部署规划信息,依次生成所述待部署产品集中每个待部署组件对应的部署任务;
调用所述流程编排引擎按序将所述待部署产品集中每个待部署组件对应的部署任务传输至所述部署引擎;
调用所述部署引擎按序执行所接收到的部署任务。
在一个实施例中,所述部署引擎包括一个或多个任务执行模块,每个任务执行模块对应一个任务关键信息;所述处理器2801调用所述部署引擎按序执行所接收到的部署任务时,具体执行如下操作:
调用所述每个任务执行模块,监听所述部署引擎当前所接收到的目标部署任务所携带的关键信息;
若所述一个或多个任务执行模块中的目标任务执行模块监听到,所述目标部署任务所携带的关键信息与所述目标任务执行模块对应的任务关键信息相匹配,则调用所述目标任务执行模块执行所述目标部署任务。
在一个实施例中,所述处理器2801,还用于创建所述待部署产品集对应的产品集部署进度树,所述产品集部署进度树中包括一个或多个节点,所述产品集部署进度树中的一个节点代表一个待部署产品的部署状态或一个待部署组件的部署状态;
遍历所述产品集部署进度树,将所述产品集部署进度树中未被遍历的任一节点作为当前遍历的目标节点;
获取所述目标节点所代表的待部署产品或待部署组件的当前部署状态,并当获取到的当前部署状态与所述目标节点所代表的部署状态不同时,用所述获取到的当前部署状态更新所述目标节点所代表的部署状态。
本申请实施例提供了一种计算机程序产品或计算机程序,计算机程序产品包括计算机程序,该计算机程序存储在计算机存储介质中;产品部署设备的处理器从计算机存储介质中读取该计算机程序,处理器执行该计算机程序,使得产品部署设备执行上述如图3图5以及图17所示的方法实施例。其中,计算机可读存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (14)
1.一种产品部署方法,其特征在于,包括:
接收针对待部署产品集的部署请求,所述待部署产品集包括N个待部署产品,所述N个待部署产品中每个待部署产品包括待部署组件,N为正整数;
响应于所述部署请求,创建所述待部署产品集对应的部署编排文件,所述部署编排文件用于指示:所述每个待部署产品的产品部署顺序以及产品部署操作,以及所述每个待部署产品中包括的待部署组件的组件部署顺序以及组件部署操作;
获取所述待部署产品集对应的部署规划信息,并基于所述部署编排文件以及所述部署规划信息,对所述N个待部署产品进行部署;所述部署规划信息包括所述每个待部署产品的产品部署地址,以及所述每个待部署产品中包括的待部署组件的组件部署地址。
2.如权利要求1所述的方法,其特征在于,所述创建所述待部署产品集对应的部署编排文件,包括:
获取组件编排模板,并基于所述组件编排模板生成所述每个待部署产品中包括的待部署组件的组件编排文件;
获取产品编排模板,并基于所述产品编排模板以及所述每个待部署产品中包括的待部署组件的组件编排文件,对所述每个待部署产品中包括的待部署组件进行部署编排,生成所述每个待署产品对应的产品编排文件;
获取产品集编排模板,并基于所述产品集编排模板以及所述每个待部署产品对应的产品编排文件,对所述待部署产品集中包括的N个待部署产品进行部署编排,生成所述待部署产品集对应的部署编排文件。
3.如权利要求2所述的方法,其特征在于,所述组件编排模板包括组件标识字段以及组件部署操作信息字段;
所述基于所述组件编排模板生成所述每个待部署产品中包括的待部署组件的组件编排文件,包括:
获取所述每个待部署产品中包括的待部署组件的物料信息,所述待部署组件的物料信息包括:所述待部署组件的组件标识以及所述待部署组件对应的组件部署操作信息;
将所述每个待部署产品中包括的待部署组件的组件标识写入至所述组件编排模板的组件标识字段中,以及将所述每个待部署产品中包括的待部署组件对应的组件部署操作信息写入至所述组件编排模板的组件部署操作信息字段中,得到所述每个待部署产品中包括的待部署组件的组件编排文件。
4.如权利要求1-3任一项所述的方法,其特征在于,所述方法还包括:
获取所述每个待部署产品中包括的待部署组件,所述每个待部署产品中包括的待部署组件的数量为一个或多个;
所述获取所述每个待部署产品中包括的待部署组件,包括:
获取所述每个待部署产品的多个组件以及每个组件的待部署版本;
将所述每个待部署产品的多个组件中,待部署版本与环境部署版本不相同的组件确定为所述每个待部署产品中包括的待部署组件。
5.如权利要求2所述的方法,其特征在于,所述每个待部署产品中包括的待部署组件的数量为一个或多个,所述产品编排模板包括产品标识字段以及组件编排文件字段;
所述基于所述产品编排模板以及所述每个待部署产品中包括的待部署组件的组件编排文件,对所述每个待部署产品中包括的待部署组件进行部署编排,生成所述每个待署产品对应的产品编排文件,包括:
获取所述每个待部署产品对应的组件部署序配置文件,所述每个待部署产品对应的组件部署序配置文件用于指示所述每个待部署产品中包括的每个待部署组件的组件部署顺序;
将所述每个待部署产品的产品标识,写入至所述产品编排模板的产品标识字段中,以及将所述每个待部署产品中包括的每个待部署组件的组件编排文件,分别按照所述每个待部署产品中包括的每个待部署组件的组件部署顺序,依次写入至所述产品编排模板的组件编排文件字段中,得到所述每个待署产品对应的产品编排文件。
6.如权利要求2所述的方法,其特征在于,所述产品集编排模板包括产品集标识字段以及产品编排文件字段;
所述基于所述产品集编排模板以及所述每个待部署产品对应的产品编排文件,对所述待部署产品集中包括的N个待部署产品进行部署编排,生成所述待部署产品集对应的部署编排文件,包括:
获取所述待部署产品集对应的产品部署序配置文件,所述产品部署序配置文件用于指示所述每个待部署产品的产品部署顺序;
将所述待部署产品集的产品集标识,写入至所述产品集编排模板的产品集标识字段中,以及将所述每个待部署产品对应的产品编排文件,分别按照所述每个待部署产品的产品部署顺序,依次写入至所述产品集编排模板的产品编排文件字段中,得到所述待部署产品集对应的部署编排文件。
7.如权利要求1所述的方法,其特征在于,所述基于所述部署编排文件以及所述部署规划信息,对所述N个待部署产品进行部署,包括:
基于所述部署编排文件中,所述每个待部署产品的产品部署顺序、所述每个待部署产品中包括的待部署组件的组件部署顺序以及所述部署规划信息,依次生成并执行所述待部署产品集中每个待部署组件对应的部署任务,一个部署任务用于指示将一个待部署组件部署在相应的组件部署地址中。
8.如权利要求7所述的方法,其特征在于,所述产品部署方法由产品部署设备执行,所述产品部署设备包括部署引擎以及流程编排引擎;
所述依次生成并执行所述待部署产品集中每个待部署组件对应的部署任务,包括:
调用所述流程编排引擎,基于所述部署编排文件中,所述每个待部署产品的产品部署顺序、所述每个待部署产品中包括的待部署组件的组件部署顺序以及所述部署规划信息,依次生成所述待部署产品集中每个待部署组件对应的部署任务;
调用所述流程编排引擎按序将所述待部署产品集中每个待部署组件对应的部署任务传输至所述部署引擎;
调用所述部署引擎按序执行所接收到的部署任务。
9.如权利要求8所述的方法,其特征在于,所述部署引擎包括一个或多个任务执行模块,每个任务执行模块对应一个任务关键信息;所述调用所述部署引擎按序执行所接收到的部署任务,包括:
调用所述每个任务执行模块,监听所述部署引擎当前所接收到的目标部署任务所携带的关键信息;
若所述一个或多个任务执行模块中的目标任务执行模块监听到,所述目标部署任务所携带的关键信息与所述目标任务执行模块对应的任务关键信息相匹配,则调用所述目标任务执行模块执行所述目标部署任务。
10.如权利要求1所述的方法,其特征在于,所述方法还包括:
创建所述待部署产品集对应的产品集部署进度树,所述产品集部署进度树中包括一个或多个节点,所述产品集部署进度树中的一个节点代表一个待部署产品的部署状态或一个待部署组件的部署状态;
遍历所述产品集部署进度树,将所述产品集部署进度树中未被遍历的任一节点作为当前遍历的目标节点;
获取所述目标节点所代表的待部署产品或待部署组件的当前部署状态,并当获取到的当前部署状态与所述目标节点所代表的部署状态不同时,用所述获取到的当前部署状态更新所述目标节点所代表的部署状态。
11.一种产品部署装置,其特征在于,包括:
获取单元,用于接收针对待部署产品集的部署请求,所述待部署产品集包括N个待部署产品,所述N个待部署产品中每个待部署产品包括待部署组件,N为正整数;
处理单元,用于响应于所述部署请求,创建所述待部署产品集对应的部署编排文件,所述部署编排文件用于指示:所述每个待部署产品的产品部署顺序以及产品部署操作,以及所述每个待部署产品中包括的待部署组件的组件部署顺序以及组件部署操作;
所述获取单元,还用于获取所述待部署产品集对应的部署规划信息;
所述处理单元,还用于基于所述部署编排文件以及所述部署规划信息,对所述N个待部署产品进行部署;所述部署规划信息包括所述每个待部署产品的产品部署地址,以及所述每个待部署产品中包括的待部署组件的组件部署地址。
12.一种产品部署设备,其特征在于,所述产品部署设备包括输入接口和输出接口,还包括:
处理器,适于实现一条或多条指令;以及,
计算机存储介质,所述计算机存储介质存储有一条或多条指令,所述一条或多条指令适于由所述处理器加载并执行如权利要求1-10任一项所述的产品部署方法。
13.一种计算机存储介质,其特征在于,所述计算机存储介质中存储有计算机程序指令,所述计算机程序指令被处理器执行时,用于执行如权利要求1-10任一项所述的产品部署方法。
14.一种计算机程序产品或计算机程序,其特征在于,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时,用于加载并执行如权利要求1-10任一项所述的产品部署方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111237460.2A CN116009881A (zh) | 2021-10-22 | 2021-10-22 | 产品部署方法、装置、设备、存储介质及计算机程序产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111237460.2A CN116009881A (zh) | 2021-10-22 | 2021-10-22 | 产品部署方法、装置、设备、存储介质及计算机程序产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116009881A true CN116009881A (zh) | 2023-04-25 |
Family
ID=86030431
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111237460.2A Pending CN116009881A (zh) | 2021-10-22 | 2021-10-22 | 产品部署方法、装置、设备、存储介质及计算机程序产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116009881A (zh) |
-
2021
- 2021-10-22 CN CN202111237460.2A patent/CN116009881A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110768833B (zh) | 基于kubernetes的应用编排部署方法及装置 | |
US20210243089A1 (en) | Automatic provisioning of monitoring for containerized microservices | |
KR101891506B1 (ko) | 하나 이상의 클라우드 시스템 상에 애플리케이션들을 이식 가능하게 배치하기 위한 방법들 및 시스템들 | |
US11093227B1 (en) | Computer-automated software release and deployment architecture | |
US11163791B2 (en) | Transformation configuration in instance data replication with bi-directional replication support | |
US9323647B2 (en) | Request-based activation of debugging and tracing | |
US7827199B2 (en) | Centralized configuration data management for distributed clients | |
US11157253B1 (en) | Computer-automated software release and deployment architecture | |
CN107818112B (zh) | 一种大数据分析作业系统及任务提交方法 | |
CN111026635B (zh) | 一种软件项目的测试系统、方法、装置及存储介质 | |
CN111506412A (zh) | 基于Airflow的分布式异步任务构建、调度系统及方法 | |
CN112035228A (zh) | 一种资源调度方法及装置 | |
US20200089524A1 (en) | Wait a duration timer action and flow engine for building automated flows within a cloud based development platform | |
TW200525938A (en) | Remote system administration using command line environment | |
US20170123777A1 (en) | Deploying applications on application platforms | |
CN112910937B (zh) | 容器集群中的对象调度方法、装置、服务器和容器集群 | |
CN115048205B (zh) | Etl调度平台及其部署方法、计算机可读存储介质 | |
US7979870B1 (en) | Method and system for locating objects in a distributed computing environment | |
KR20010073083A (ko) | 세션 관리/분산 관리 기능을 갖는 웹 애플리케이션 시스템및 그 운용 기구 | |
JP2024508452A (ja) | イベントベースのアプリケーションのホスティング | |
CN111240998B (zh) | 测试用例处理方法和装置 | |
CN111367804B (zh) | 基于云计算及网络编程实现前端协作调试的方法 | |
CN116009881A (zh) | 产品部署方法、装置、设备、存储介质及计算机程序产品 | |
US20200073727A1 (en) | Scheduling software jobs having dependencies | |
CN113220480B (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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40084290 Country of ref document: HK |