一种实现应用自动部署的方法和系统

文档序号:1952147 发布日期:2021-12-10 浏览:14次 >En<

阅读说明:本技术 一种实现应用自动部署的方法和系统 (Method and system for realizing automatic application deployment ) 是由 井志永 蒋军伟 刘恒辉 张冲 于 2021-09-09 设计创作,主要内容包括:本申请公开了一种实现应用自动部署的方法和系统,该方法包括:应用自动发布平台接收到接入人员发送的应用接入请求后,如果所述接入人员具有项目管理权限,则接收接入人员发出的项目管理指令,添加项目以及待部署的应用,并将所述应用的部署环境设置在相应的应用部署主机上;当接收到项目管理人员发送的部署请求后,创建工单,并将所述工单提交工单审核模块进行审核;接收到所述工单通过审核的指令后,将所述应用发送给自动部署模块;自动部署模块按照部署方案选择部署子模块,基于部署命令将所述应用部署在相应的应用部署主机上。本申请所提供的应用自动部署方法,提高了部署的效率和准确率,自动化完成率高,简化了整个部署流程。(The application discloses a method and a system for realizing automatic application deployment, wherein the method comprises the following steps: after receiving an application access request sent by an access person, if the access person has a project management authority, an automatic application issuing platform receives a project management instruction sent by the access person, adds a project and an application to be deployed, and sets a deployment environment of the application on a corresponding application deployment host; after a deployment request sent by a project manager is received, a work order is created and submitted to a work order auditing module for auditing; after receiving an instruction that the work order passes the audit, sending the application to an automatic deployment module; and the automatic deployment module selects a deployment submodule according to the deployment scheme, and deploys the application on the corresponding application deployment host based on the deployment command. The application automatic deployment method provided by the application improves deployment efficiency and accuracy, is high in automation completion rate, and simplifies the whole deployment process.)

一种实现应用自动部署的方法和系统

技术领域

本申请涉及自动化技术领域,尤其涉及一种实现应用自动部署的方法和系统。

背景技术

微服务作为一项云中部署应用和服务的新技术,已成为当下的热门话题。微服务的基本思想在于围绕着业务领域组件来创建应用,将不同组件组合在一起创建的应用可独立地进行开发和管理。微服务不需要像普通服务那样成为一种独立的功能或者独立的资源,在分散的组件中使用微服务架构平台,可以使部署、管理和服务功能交付变得更加简单。通过部署,可以让产品或者应用在其他服务器环境中正常使用运行。

目前企业应用逐渐偏微服务化,应用部署主机分散并且数量很多,部署服务数量变多导致出现故障的概率增大,依靠人工部署容易出错而且效率低,目前整个部署流程实现也比较复杂,不利于企业系统的维护和发展。

发明内容

本申请实施例提供了一种实现应用自动部署的方法和系统,以便提高部署的准确率和效率,简化部署流程。

第一方面,本申请实施例提供了一种实现应用自动部署的方法,所述方法包括:

应用自动发布平台接收到接入人员发送的应用接入请求后,判断所述接入人员是否具有项目管理权限,如果是,则接收所述接入人员发出的项目管理指令,在所述应用自动发布平台上添加项目以及待部署的所述应用,并将所述应用的部署环境,设置在相应的应用部署主机上;

所述应用自动发布平台接收到项目管理人员发送的部署请求后,创建工单,并将所述工单提交工单审核模块进行审核;所述工单用于记录所述应用的部署方案信息;

所述应用自动发布平台接收到所述工单审核模块发送的所述工单通过审核的指令后,将所述应用发送给自动部署模块,所述自动部署模块中具有以插件方式集成的部署子模块;

所述自动部署模块按照所述应用的部署方案,选择所述部署子模块,所述部署子模块基于部署命令,将所述应用部署在相应的应用部署主机上。

在一些可能的实施方式中,所述应用自动发布平台接收到所述工单通过审核的指令还包括:

所述应用自动发布平台将所述工单同步到工单管理系统,接收所述应用所属平台发送的所述工单通过审核的指令。

在一些可能的实施方式中,所述自动部署模块中具有以插件方式集成的部署子模块包括:

所述自动部署模块中具有以插件Plugin方式方式集成的任务执行器,所述任务执行器支持SCP、SSH和SFTP中的至少一种协议。

在一些可能的实施方式中,所述方法还包括:

部署所述应用之前,所述应用自动平台备份所述应用未部署前的版本;

当所述应用部署失败后,所述应用自动平台将所述应用回退到所述未部署前的版本。

在一些可能的实施方式中,所述部署子模块基于部署命令,将所述应用部署在相应的应用部署主机上包括:

当部署所述应用为串行部署时,不同的单个部署子模块按照特定的顺序,基于部署命令,将所述应用部署在相应的应用部署主机上;当部署所述应用为并行部署时,相应的多个部署子模块基于部署命令,以并行方式同时将所述应用部署在相应的应用部署主机上。

在一些可能的实施方式中,将所述应用的部署环境,设置在相应的应用部署主机上包括:

将所述主机进行分组设置,将所述应用的部署环境设置在相应的分组主机上。

在一些可能的实施方式中,所述方法还包括:

所述应用自动发布平台对所述应用的部署进度进行监控。

在一些可能的实施方式中,所述应用的部署环境包括:

预发布环境、生产环境和测试环境中的至少一种。

在一些可能的实施方式中,所述部署命令包括:

部署前命令、部署后命令、环境监测命令和上线发布命令中的至少一种。

第二方面,本申请实施例提供了一种实现应用自动部署的系统,所述系统包括环境管理模块、工单管理模块、工单审核模块以及自动部署模块:

所述环境管理模块,用于接收到接入人员发送的应用接入请求后,判断所述接入人员是否具有项目管理权限,如果是,则接收所述接入人员发出的项目管理指令,在所述应用自动发布平台上添加项目以及待部署的所述应用,并将所述应用的部署环境,设置在相应的应用部署主机上,然后通知项目管理人员所述部署环境设置完成;

所述工单管理模块,用于接收到项目管理人员发送的部署请求后,创建工单,并将所述工单提交所述工单审核模块审核;所述工单用于记录所述应用的部署方案信息;

所述工单审核模块,用于审核所述工单管理模块提交的所述工单,并将所述工单审核结果发送给所述自动部署模块;

所述自动部署模块,用于接收到所述工单审核模块发送的所述工单通过审核的指令后,接收所述应用,按照所述应用的部署方案选择部署子模块,所述部署子模块基于部署命令,将所述应用部署在相应的应用部署主机上;其中,所述自动部署模块中具有以插件方式集成的所述部署子模块。

在本申请实施例的上述实现方式中,应用自动发布平台接收到接入人员发送的应用接入请求后,判断所述接入人员是否具有项目管理权限,如果是,则接收所述接入人员发出的项目管理指令,在所述应用自动发布平台上添加项目以及待部署的所述应用,并将所述应用的部署环境,设置在相应的应用部署主机上;当接收到项目管理人员发送的部署请求后,创建工单,并将所述工单提交工单审核模块进行审核;所述工单用于记录所述应用的部署方案信息;接收到工单审核模块发送的所述工单通过审核的指令后,将所述应用发送给自动部署模块,所述自动部署模块中具有以插件方式集成的部署子模块;自动部署模块按照所述应用的部署方案,选择所述部署子模块,所述部署子模块基于部署命令,将所述应用部署在相应的应用部署主机上。本申请所提供的应用自动部署方法,提高了部署的效率和准确率,自动化完成率高,简化了整个部署流程。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见,下面描述中的附图仅仅是本申请中提供的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。

图1为本申请实施例中一种实现应用自动部署的方法流程图;

图2为本申请实施例中一种执行部署任务的方法流程图;

图3为本申请实施例中一种创建项目的方法示意图;

图4为本申请实施例中一种设置应用的部署环境的方法示意图;

图5为本申请实施例中一种工单审核的方法流程图;

图6为本申请实施例中一种创建工单的方法示意图;

图7为本申请实施例中一种工单的内容示意图;

图8为本申请实施例中一种定义部署命令的方法示意图;

图9为本申请实施例中一种实现应用自动部署的系统的结构示意图。

具体实施方式

目前企业应用微服务化,应用部署主机分散并且数量很多,依靠人工部署容易出错而且效率低,针对不同的应用部署,还需要创建上线工单进行申请审核,使整个部署流程实现比较复杂,效率比较低。

基于此,本申请实施例提供了一种实现应用自动部署的方法,提高部署的效率和准确率,简化整个部署流程。具体实现时,应用自动发布平台接收到接入人员发送的应用接入请求后,判断所述接入人员是否具有项目管理权限,如果是,则接收所述接入人员发出的项目管理指令,在所述应用自动发布平台上添加项目以及待部署的所述应用,并将所述应用的部署环境,设置在相应的应用部署主机上;当接收到项目管理人员发送的部署请求后,创建工单,并将所述工单提交工单审核模块进行审核;所述工单用于记录所述应用的部署方案信息;接收到工单审核模块发送的所述工单通过审核的指令后,将所述应用发送给自动部署模块,所述自动部署模块中具有以插件方式集成的部署子模块;自动部署模块按照所述应用的部署方案,选择所述部署子模块,所述部署子模块基于部署命令,将所述应用部署在相应的应用部署主机上。本申请实施例所提供的应用自动部署方法,提高了部署的效率和准确率,自动化完成率高,同时简化了整个部署流程。

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整的描述,所描述的实施例仅为本申请示例性的实施方式,并非全部实现方式。本领域的技术人员可以结合本申请的实施例,在不进行创造性劳动的情况下,获得其他的实施例,而这些实施例也在本申请的保护范围之内。

本申请实施例的实现应用自动部署的方法是基于一种应用自动发布平台实现的,该平台能够管理多个项目的自动化部署,主要功能包括:主机信息管理、项目管理、应用管理、应用环境管理、应用环境分组管理、应用环境变量管理、部署方案管理、发布单管理等等,提高部署的效率和准确率,自动化完成效率高,能够实现将工单审核和自动部署相结合,简化整个部署流程。所述系统平台仅为本申请示例性的实现方式,并不仅限于此种形式。

自动发布平台具备微服务架构场景下的项目管理功能,可以根据需求创建新的项目,并添加项目内的应用,将所述应用部署到主机上。所述项目是指业务逻辑的项目,可以理解为多个应用的集合,项目与应用是一对多的关系,能更好地解决微服务场景的多个不同应用的拆分方式。参见图1,图1展示了本申请实施例中一种实现应用自动部署的方法流程图,以便提高部署的效率和准确率,简化部署流程。为了实现将应用部署到不同的主机服务器上,该方法具体包括如下步骤:

S101:应用自动发布平台接收接入人员发送的应用接入请求;

如果有应用部署需求时,接入人员会将请求接入到应用自动发布平台,完成所述应用的部署任务。

S102:判断所述接入人员是否具有项目管理权限;

S103:如果是,则接收所述接入人员发出的项目管理指令,在所述应用自动发布平台上添加项目以及待部署的所述应用,并将所述应用的部署环境,设置在相应的应用部署主机上;

应用与部署环境也是一对多的关系,可以根据实际需求,设置应用不同的部署环境,例如开发环境、测试环境、预发布环境以及生产环境等。部署应用时,环境管理模块可以基于管理人员对环境的选择操作,设置应用的不同部署环境进行部署发布。

S104:应用自动发布平台接收到项目管理人员发送的部署请求后,创建工单,并将所述工单提交工单审核模块进行审核;所述工单用于记录所述应用的部署方案信息;

设置所述应用的部署环境之后,需要申请部署所述应用,应用自动发布平台在接收到项目管理人员发送的部署请求后,创建申请部署所述应用的工单,工单上记录了所述应用的部署方案相关信息,包括项目应用需求、执行部署时间、方案制定人、执行部署人和结果确认人等信息。然后需要将所述工单提交至工单审核模块,审核所述工单。

S105:应用自动发布平台接收到所述工单审核模块发送的所述工单通过审核的指令后,将所述应用发送给自动部署模块;所述自动部署模块中具有以插件方式集成的部署子模块;

S106:所述自动部署模块按照所述应用的部署方案,选择所述部署子模块,所述部署子模块基于部署命令,将所述应用部署在相应的应用部署主机上。

在工单审核通过之后,维护人员点击部署按钮,平台系统就可以自动执行部署任务,将所述应用部署到相应的部署主机中。在本申请实施例中,以Docker部署服务器为例说明自动部署模块如何实现应用部署,但不仅限于此种实现方式,其他可以实现同样功能的自动部署模块也在本申请的保护范围之内。

Docker部署服务器包括任务服务器和任务执行器,参见图2,展示了一种执行部署任务的方法流程图,执行应用部署时具体包括以下步骤:

S201:任务服务器接收部署任务;所述部署任务支持串行部署任务和并行部署任务;

S202:任务执行器主动领取部署任务;

如果是串行部署任务,则由一个个的单个任务执行器领取执行,一个任务执行器领取部署任务之后,由另一个任务执行器领取下一个部署任务;如果是并行部署任务,由多个任务执行器分别领取任务,以并行的方式同时执行,任务执行器的个数在Docker环境下可按需弹性增加。

S203:任务执行器基于部署命令自动执行部署任务,完成部署包上传。

管理人员可以自定义部署命令,包括部署前命令、部署后命令、环境监测命令以及上线发布命令,任务执行器在执行部署任务时,就可以按照所述部署命令形成的部署流程分阶段执行,包括检测基础环境、服务器下载和解压版本包、执行部署前命令、软链版本至部署目录、执行部署后命令、应用检测、执行上线命令、进行业务监控,最终完成部署包上传、服务平滑重启以及备份部署等工作。

本申请实施例提供的自动部署方法与现有的SSH和agent部署方式不同,采用任务执行器与插件Plugins相结合的方式,不同类型的任务执行器以Plugins插件方式集成,可以支持多种环境和协议的自动部署任务,部署应用时根据具体需求选择不同的任务执行器,比如可以选择支持SCP、SFTP等协议的任务执行器。

下面基于整个部署流程,具体地说明如何实现应用的自动部署。接入人员会从外部环境中接入所需要部署的各种应用,在第一次登录自动发布平台之后,会进入新建项目的界面,后续将部署的应用添加到对应的项目中。自动发布平台具备微服务架构场景下的项目管理功能,所述项目指业务逻辑的项目,可理解为多个应用的集合。参见图3,图3展示了一种创建项目的方法示意图,按照实际需求填写所创建项目的相关信息即可,包括项目名称、项目所运行的环境以及目标集群等,集群主机代表组成同一个群组的主机服务器,也就是应用所要部署的主机。如果以后还需要创建其他项目,点击项目列表,然后添加项目即可创建新的项目。

根据所创建的项目,需要添加项目相关的成员,设置成员在项目中的职责,比如项目管理人员、维护人员、部署发布人员等,不同的成员在整个部署流程中负责不同的任务。对使用平台的人员进行账号管理,配置成员基本信息,对成员使用系统功能以及管理项目的权限进行配置管理,比如可以设置成员在项目中的职责为项目管理人员、开发人员、维护人员等。

创建项目之后,可以添加项目内的应用,项目与应用可以是一对多的关系,一个项目下可以包含多个应用,这样能更好地解决微服务架构场景的多个不同应用的拆分方式。

将应用部署到主机上时,可以设置不同的部署环境,应用与部署环境也是一对多的关系。参见图4,图4展示了一种设置应用的部署环境的方法示意图,可以根据应用自定义不同的部署环境,以满足不同场景下的应用部署需求,应用的部署环境包括测试环境、预发布环境以及生产环境等。在具体的部署环境下,可以将应用所要部署的主机进行分组,配置多个集群主机,能够满足企业分批部署以及灰度发布的需求。灰度发布是一种能够平滑过渡的发布方式,比如进行A/B产品上线的测试,即让一部分用户继续使用原有的产品特性A,一部分用户开始使用新的产品特性B,如果用户对产品特性B没有什么反对意见,那么就可以逐步扩大使用范围,最终把所有用户都迁移到产品B上面来。灰度发布可以保证整体系统的稳定性,在初始灰度的时候可以发现问题并及时调整问题,以降低问题对系统的影响度。所以企业在部署应用时,可能只想让应用部署到部分的主机上,这时候就可以分组进行部署。

在设置应用的部署环境之后,需要创建申请部署所述应用的工单,工单审核通过之后才能完成部署发布。参见图5,展示了一种工单审核的方法流程图,创建工单以及审核工单主要包括以下步骤:

S501:创建工单;

创建工单是由项目管理人员操作的,如图6所示,展示了一种创建工单的方法示意图,需要登录项目管理人员的账号,进入工单管理-工单(项目经理)的菜单选项,然后点击创建工单按钮进行工单的新建。

创建工单之后,需要填写工单的相关信息,参见图7,图7所示的工单信息中包括发布申请单的名称、项目名称以及项目需求,还有执行部署任务的时间。另外,还需要提前选择方案制定人、执行部署人以及结果确认人,以便后续可以匹配任务相关人员处理相关工作。

S502:制定部署方案;

在创建工单之后,需要制定所述应用的部署方案,然后审核所制定的部署方案能否顺利执行。制定部署方案是由步骤S501所选择的方案制定人进行制定的,登录工单里方案制定人的账号,进入工单(开发经理)的菜单选项,点击制定方案按钮,进行部署方案的制定,填写相关的方案信息,包括应用名称、发布版本、回退版本、部署包路径等,然后点击提交审核按钮,就进入工单审核阶段了。

S503:审核工单。

制定完成部署方案之后,需要审核所述工单,登录工单的执行部署人账号,进入工单审核(维护)菜单选项,审核所创建的工单。当审核通过后,所述工单的状态就变为审核通过。

维护人员审核通过工单之后,就会发布工单,然后任务执行器就可以按照设定的执行部署时间,执行应用的部署任务,并且整个部署过程进度和状态都是透明的,可以随时查看部署任务执行到哪一阶段。

工单审核通过后,任务服务器接收部署任务,任务执行器主动领取部署任务,所述部署任务分为串行部署任务和并行部署任务。如果是串行部署任务,则由每个单个任务执行器,按照顺序执行部署任务;如果是并行部署任务,则由多个任务执行器分别领取部署任务,以并行的方式同时执行部署任务。任务执行器的个数在Docker环境下可以根据需求弹性增加。任务执行器按照部署命令分阶段执行部署步骤,完成部署包的上传,服务平滑重启以及备份等工作。

由于整个部署任务是由任务执行器自动执行的,所以需要事先自定义部署命令,按照部署前、部署后、环境监测、上线发布进行定义。基于部署命令,整个部署流程包括①检测基础环境、②服务器下载和解压版本包、③执行部署前命令、④软链版本至部署目录、⑤执行部署后命令、⑥应用检测、⑦执行上线命令,⑧业务监控、⑨完成部署任务。参见图8,展示了一种定义部署命令的方法示意图,可以自定义部署命令,然后由任务执行器按照部署流程自动执行部署任务。应用自动平台可以监控英勇的部署进度,整个部署过程是可视化的,允许随时查看部署进度,并且如果发现部署中出现问题,可以提前终止部署任务。

需要注意的是,并不是所有应用的部署任务都可以部署成功,所以在执行自动部署任务时,可以备份应用部署之前的版本,如果所述应用部署失败后,可以自动回退到备份的旧版本。另外,部署任务失败之后,系统平台可以找出失败的节点,方便管理人员进行查看修改。

系统平台对于所有的部署操作可以重新进行查询,对于平台中的项目、应用、部署任务、工单以及相关管理人员都可以进行数据统计,以图表等形式直观地展现。另外还支持将部署进展的关键事件以短信、邮件等形式通知给相关管理人员,以便管理人员能及时了解部署进度,如果部署任务出现问题也能及时做出调整。

此外,本申请实施例还提供了一种实现应用自动部署的系统,参见图9,展示了该系统900的结构示意图,包括环境管理模块901、工单管理模块902、工单审核模块903以及自动部署模块904:

环境管理模块901,用于接收到接入人员发送的应用接入请求后,判断所述接入人员是否具有项目管理权限,如果是,则接收所述接入人员发出的项目管理指令,在所述应用自动发布平台上添加项目以及待部署的所述应用,并将所述应用的部署环境,设置在相应的应用部署主机上,然后通知项目管理人员所述部署环境设置完成;

工单管理模块902,用于接收到项目管理人员发送的部署请求后,创建工单,并将所述工单提交工单审核模块903审核;所述工单用于记录所述应用的部署方案信息;

工单审核模块903,用于审核工单管理模块902提交的所述工单,并将所述工单审核结果发送给自动部署模块904;

自动部署模块904,用于接收到工单审核模块903发送的所述工单通过审核的指令后,接收所述应用,按照所述应用的部署方案选择部署子模块,所述部署子模块基于部署命令,将所述应用部署在相应的应用部署主机上;其中,所述自动部署模块中具有以插件方式集成的所述部署子模块。

应用可以部署到不同的部署环境,包括测试环境、生产环境以及预发布环境等,在环境管理模块中可以选择不同的部署环境,实际部署执行时按照所选的部署环境进行部署发布即可。

设置所述应用的部署环境之后,需要申请部署所述应用,工单管理模块在接收到所述应用的部署申请后,创建申请部署应用的工单,工单上记录了所述应用的部署方案相关信息,包括项目应用需求、执行部署时间、方案制定人、执行部署人和结果确认人等信息。方案制定人填写制定部署方案的信息,包括应用名称、应用发布的版本、应用回退版本以及部署包的路径等,然后将工单提交至工单审核模块进行审核,审核完成后将审核结果发送给自动部署模块,当审核通过之后,自动部署模块执行部署任务。

在本申请实施例中,自动部署模块中包括任务服务器和任务执行器,当接收到工单审核通过的结果后,任务服务器接收部署任务,然后由任务执行器主动领取所述部署任务,并按照部署命令自动执行所述部署任务。本申请实施例采用将任务执行器以Plugin插件方式集成,可以支持多种环境和协议的自动部署,部署应用时根据具体需求选择不同的任务执行器,比如支持SCP、SFTP协议的任务执行器。

本说明书中的每个实施例重点说明的是与其他实施例的不同之处,各个实施例之间相似的部分互相参见即可。尤其对于装置实施例而言,由于其基本类似于方法实施例,所以描述得比较简单,相关部分参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络单元上,可以根据实际需要选择其中的部分或者全部模块来实现本申请实施例的方案。

以上所述仅是本申请示例性的实施例,并非对本申请做任何形式上的限制。对以上实施例所做的等同变化或修改,均属于本申请的保护范围。

16页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种操作系统个性化配置的方法和智能集成平台

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!