应用部署方法和装置与流程

文档序号:15828746发布日期:2018-11-03 00:12阅读:152来源:国知局

本发明涉及计算机领域,尤其涉及一种应用部署方法和装置。

背景技术

目前很多应用都是采用服务端部署的方式进行开发。部署系统时需要经过构建软件包、上传软件包到服务器部署、重启软件服务容器等环节。部署相当繁琐、重复,占用了软件开发、测试的大量时间。并且有时一个应用部署后长期不使用而占用服务器资源。

现有应用部署的技术方案为:通过本地构建软件包并上传到服务器部署;通过开源工具先创建固定配置任务,手动触发任务进行部署。

在实现本发明过程中,发明人发现现有技术中至少存在如下问题:

(1)软件包部署前很多环节需要手工配置;

(2)软件包部署方式不够灵活,不通用;

(3)服务器、软件包很多时,不方便管理服务器资源和汇总部署相关信息。



技术实现要素:

有鉴于此,本发明实施例提供一种应用部署方法和装置,能够高效、灵活的进行应用部署,能够进行软件包管理,充分利用服务器资源。

为实现上述目的,根据本发明实施例的一个方面,提供了一种应用部署方法。

本发明实施例的一种应用部署方法,包括:配置待部署应用信息,接收应用部署指令;根据配置的待部署应用信息构建待部署应用,并上传构建的软件包;对上传的软件包进行管理以对软件包进行信息记录;通知应用服务器获取软件包以便应用服务器进行安装部署。

可选地,配置待部署应用信息,接收应用部署指令包括:响应于任务的手动或者定时的触发,配置待部署应用信息,接收应用部署指令。

可选地,配置的待部署应用信息包括:应用服务器的ip地址、域名、代码库、软件包名、应用服务器的版本、编译打包工具。

可选地,对上传的软件包进行管理以对软件包进行信息记录包括:将数据库中存储的域名对应的id作为一级目录的目录名,在所述一级目录下存放编译日志文件和软件包。

可选地,所述方法还包括:监控部署的软件包的运行状态及应用服务器的运行状态,并提供告警功能。

可选地,所述方法还包括:查询数据库是否已存在待部署软件包,当数据库存有待部署软件包时,将该待部署软件包作为构建的软件包进行下载并存储。

可选地,所述方法还包括:查询是否已开始构建待部署软件包,当正在构建待部署应用,则使用相同的构建任务继续构建待部署应用。

可选地,通过远程交互的方式通知应用服务器获取软件包以便应用服务器进行安装部署。

可选地,所述方法还包括:获取软件包构建信息、部署结果、部署的软件包的运行状态及应用服务器的运行状态,并根据软件包构建信息、部署结果、部署的软件包的运行状态及应用服务器的运行状态统计分析应用服务器的资源使用情况和应用部署情况。

为实现上述目的,根据本发明实施例的另一方面,提供了一种应用部署装置。

本发明实施例的一种应用部署装置,包括:部署信息管理模块,用于配置待部署应用信息,接收应用部署指令;软件包构建模块,用于根据配置的待部署应用信息构建待部署应用,并上传构建的软件包;软件包管理模块,用于对上传的软件包进行管理以对软件包进行信息记录;部署控制模块,用于通知应用服务器获取软件包以便应用服务器进行安装部署。

可选地,配置待部署应用信息,接收应用部署指令包括:响应于任务的手动或者定时的触发,配置待部署应用信息,接收应用部署指令。

可选地,配置的待部署应用信息包括:应用服务器的ip地址、域名、代码库、软件包名、应用服务器的版本、编译打包工具。

可选地,对上传的软件包进行管理以对软件包进行信息记录包括:将数据库中存储的域名对应的id作为一级目录的目录名,在所述一级目录下存放编译日志文件和软件包。

可选地,所述装置还包括:监控管理模块,用于监控部署的软件包的运行状态及应用服务器的运行状态,并提供告警功能。

可选地,所述软件包管理模块,还用于查询数据库是否已存在待部署软件包,当数据库存有待部署软件包时,将该待部署软件包作为构建的软件包进行下载并存储。

可选地,所述软件包构建模块还用于:查询是否已开始构建待部署软件包,当正在构建待部署应用,则使用相同的构建任务继续构建待部署应用。

可选地,所述装置还包括:远程控制模块,部署控制模块通过远程控制模块通知应用服务器获取软件包并进行安装部署。

可选地,所述部署信息管理模块还用于:获取软件包构建信息、部署结果、部署的软件包的运行状态及应用服务器的运行状态,并根据软件包构建信息、部署结果、部署的软件包的运行状态及应用服务器的运行状态统计分析应用服务器的资源使用情况和应用部署情况。

为实现上述目的,根据本发明实施例的再一方面,提供了一种电子设备。

本发明实施例的一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明实施例的一种应用部署方法。

为实现上述目的,根据本发明实施例的再一方面,提供了一种计算机可读介质。

本发明实施例的一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明实施例的一种应用部署方法。

根据本发明的技术方案,上述发明中的一个实施例具有如下优点或有益效果:在配置待部署应用信息后,后续构建、上传、安装软件包全是自动执行的,无需人工参与,解决了软件构建、部署人工参与环节多的问题,提高了应用部署效率。增加了对软件包的管理,根据软件包构建信息和部署结果、部署好的软件包的运行状态及应用服务器的运行状态统计分析应用服务器的资源使用情况和应用部署情况,集中化进行部署管理,方便查询、分析及挖据信息。

上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。

附图说明

附图用于更好地理解本发明,不构成对本发明的不当限定。其中:

图1是根据本发明实施例的应用部署方法的主要步骤的示意图;

图2是根据本发明实施例的应用部署方法的执行流程示意图;

图3是根据本发明实施例的应用部署装置的主要模块的示意图;

图4是根据本发明实施例的应用部署装置的系统架构图;

图5是适用于来实现本发明实施例的电子设备的计算机系统的结构示意图。

具体实施方式

以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。

本发明实施例中,改进了之前的应用部署方法,实现了一种远程自动部署应用的解决方案。

图1是本发明实施例的应用部署方法的主要步骤的示意图。

如图1所示,本发明实施例的应用部署方法主要包括如下步骤:

步骤s101:配置待部署应用信息,接收应用部署指令。配置待部署应用信息为配置应用、用户等信息。具体包括用户权限设置、服务器ip地址、域名、代码库、应用包名、web应用服务器(如tomcat)版本、jdk版本、maven版本等,用于告知在哪台服务器部署,编译打包时用什么jdk、maven版本,部署时用什么域名和web容器。应用部署指令由用户写入。

在步骤s101完成信息配置后,从步骤s102开始进行软件包的构建、管理、部署。

步骤s102:根据配置的待部署应用信息构建待部署应用,并上传构建的软件包。使用开源持续集成工具,如jenkins构建待部署应用,将构建的软件包上传到软件包管理模块进行云存储。

步骤s103:对上传的软件包进行管理以对软件包进行信息记录。具体为:将数据库中存储的域名对应的id作为一级目录的目录名,在所述一级目录下存放编译日志文件和软件包。

步骤s104:通知应用服务器获取软件包以便应用服务器进行安装部署。应用服务器收到获取通知后从云存储获取软件包并进行部署。

图2是本发明实施例的应用部署方法的执行流程示意图。

如图2所示,本发明实施例中,应用部署方法的具体执行流程是:

(1)部署信息管理模块预先配置待部署应用信息,接收应用部署命令并发送至部署控制模块;

(2)部署控制模块接收到部署命令,向软件包管理模块发送查询包;

(3)软件包管理模块接收到查询包,通过数据库查询是否存在待部署软件包,当数据库存在待部署软件包时下载并存储该软件包,同时将查询结果反馈至部署控制模块;

(4)部署控制模块收到数据库中存在待部署软件包的查询结果时,直接通过远程控制模块通知应用服务器从软件包管理模块获取该待部署软件包,执行(8);收到数据库中不存在待部署软件包时,则通知软件包构建模块执行软件包构建任务,执行(5);

(5)软件包构建模块接收软件包构建任务,查询是否正在构建相同的应用包,如果正在构建,则使用相同的构建任务,执行(6);如果还没开始构建,则调用持续集成工具构建软件包并将构建状态发送至数据库进行修改,将构建的软件包上传到软件包管理模块,执行(6);

(6)软件包管理模块对软件包进行信息记录,并分别更新到数据库和部署控制模块;

(7)部署控制模块在软件包上传完成后通过远程控制模块通知应用服务器从软件包管理模块获取软件包;

(8)应用服务器通过远程控制模块从软件包管理模块获取软件包后,通过解压、重启完成部署,将部署结果通过远程控制模块反馈到部署控制模块;

(9)部署控制模块将软件包构建信息和部署结果发送至部署信息管理模块;

(10)监控管理模块通过远程控制模块监控部署好的软件包的运行状态及应用服务器的运行状态,将运行状态发送至部署信息管理模块,同时提供告警功能;

(11)部署信息管理模块向监控模块查询部署好的软件包的运行状态及应用服务器的运行状态,并根据收到的软件包构建信息和部署结果、查询到的部署好的软件包的运行状态及应用服务器的运行状态统计分析应用服务器的资源使用情况和应用部署情况。

其中,部署信息管理模块响应于任务的手动或者定时的触发,配置待部署应用信息,接收应用部署指令。定时触发通过quartz框架实现:用户配置定时部署任务(站点、服务器、构建参数、触发时间),任务到达触发时间后自动触发,通知软件包构建模块执行构建任务;软件包构建模块返回构建任务号至部署控制模块;部署控制模块通过构建任务编号查询构建状态;软件包构建模块构建完成后将软件包提交给软件包管理模块;然后部署控制模块进行部署操作。部署完成后,部署控制模块通知测试模块进行bvt(buildverificationtesting,版本验证测试)测试,如果测试通过,部署任务完成。如果测试失败则通知回滚模块进行软件包回滚并再次执行bvt测试,记录测试结果,回滚完成。

其中,配置的待部署应用信息包括:应用服务器的ip地址、域名、代码库、软件包名、应用服务器的版本、编译打包工具。

其中,软件包管理模块对软件包进行信息记录包括:将数据库中存储的域名对应的id作为一级目录的目录名,在所述一级目录下存放编译日志文件和软件包。

另外,部署控制管理模块以轮询的方式发送查询包到软件包管理模块,发送查询包目的是查询指定的软件包是否存在。如果没有,再调用软件包构建模块重新打包、部署。

另外,软件包构建模块查询构建信息时,如果在数据库中查询到特征值(源码地址、分支名、版本号、编译参数)与待部署软件包相同的软件包则为同一构建任务,则把继续执行构建任务。

另外,软件包构建模块负责调用jenkins构建任务,并获取jenkins中的任务构建结果。jenkins主要负责执行构建任务。

另外,远程控制模块是一个分布式单元,分布于所有服务器上,负责应用部署系统和应用服务器的远程交互。

通过本发明实施例的应用部署方法可以看出,在配置待部署应用信息后,后续构建、上传、安装软件包全是自动执行的,无需人工参与,解决了软件构建、部署人工参与环节多的问题,提高了应用部署效率。增加了对软件包的管理,根据软件包构建信息和部署结果、部署好的软件包的运行状态及应用服务器的运行状态统计分析应用服务器的资源使用情况和应用部署情况,集中化进行部署管理,方便查询、分析及挖据信息。

图3是本发明实施例的应用部署装置的主要模块的示意图。如图3所示,本发明实施例的应用部署装置300主要包括:

部署信息管理模块301,用于配置待部署应用信息,接收应用部署指令。部署信息管理模块301负责用于与用户交互,配置应用、用户等信息,具体包括用户权限设置、服务器ip地址、域名、代码库、应用包名、web应用服务器(如tomcat)版本、jdk版本、maven版本等,用于告知在哪台服务器部署,编译打包时用什么jdk、maven版本,部署时用什么域名和web容器。应用部署指令由用户写入。

软件包构建模块302,用于根据配置的待部署应用信息构建待部署应用,并上传构建的软件包。软件包构建模块302负责接收软件包构建任务并反馈软件包构建进度,使用开源持续集成工具,如jenkins构建待部署应用,将构建的软件包上传到软件包管理模块303进行云存储。

软件包管理模块303,用于对上传的软件包进行管理以对软件包进行信息记录。软件包管理模块303负责软件包的上传、存储、下载、软件包信息记录功能。

部署控制模块304,用于通知应用服务器获取软件包以便应用服务器进行安装部署。部署控制模块304负责控制编译、打包、部署的整个过程。应用服务器收到部署控制模块304发来的获取通知后,向软件包管理模块303发送软件包获取请求,软件包管理模块303根据获取请求将软件包上传到应用服务器以便其部署。

图4是本发明实施例的应用部署装置的系统架构图。

如图4所示,本发明实施例的应用部署装置的系统架构包括部署信息管理模块、部署控制模块、软件包管理模块、软件包构建模块、监控管理模块和远程控制模块。部署信息管理模块预先配置待部署应用信息,接收部署命令并发送至部署控制模块。部署控制模块接收到部署命令,向软件包管理模块发送查询包。软件包管理模块接收到查询包,通过数据库查询是否存在待部署软件包,当数据库存在待部署软件包时下载并存储该软件包,同时将查询结果反馈至部署控制模块。部署控制模块收到数据库中存在待部署软件包的查询结果时,直接通过远程控制模块通知应用服务器从软件包管理模块获取该待部署软件包。收到数据库中不存在待部署软件包时,则通知软件包构建模块执行软件包构建任务。软件包构建模块接收软件包构建任务,查询是否正在构建相同的应用包,如果正在构建,则使用相同的构建任务;如果还没开始构建,则调用持续集成工具构建软件包并将构建状态发送至数据库进行修改,将构建的软件包上传到软件包管理模块。软件包管理模块记录软件包的构建信息,并分别更新到数据库和部署控制模块;部署控制模块在软件包上传完成后通过远程控制模块通知应用服务器从软件包管理模块获取软件包。应用服务器通过远程控制模块从软件包管理模块获取软件包后,通过解压、重启完成部署,将部署结果通过远程控制模块反馈到部署控制模块。部署控制模块将软件包构建信息和部署结果发送至部署信息管理模块。监控管理模块通过远程控制模块监控部署好的软件包的运行状态及应用服务器的运行状态,将运行状态发送至部署信息管理模块,同时提供告警功能。部署信息管理模块向监控模块查询部署好的软件包的运行状态及应用服务器的运行状态,并根据收到的软件包构建信息和部署结果、查询到的部署好的软件包的运行状态及应用服务器的运行状态统计分析应用服务器的资源使用情况和应用部署情况。

其中,部署信息管理模块响应于任务的手动或者定时的触发,配置待部署应用信息,接收应用部署指令。定时触发通过quartz框架实现:用户配置定时部署任务(站点、服务器、构建参数、触发时间),任务到达触发时间后自动触发,通知软件包构建模块执行构建任务;软件包构建模块返回构建任务号至部署控制模块;部署控制模块通过构建任务编号查询构建状态;软件包构建模块构建完成后将软件包提交给软件包管理模块;然后部署控制模块进行部署操作。部署完成后,部署控制模块通知测试模块进行bvt(buildverificationtesting,版本验证测试)测试,如果测试通过,部署任务完成。如果测试失败则通知回滚模块进行软件包回滚并再次执行bvt测试,记录测试结果,回滚完成。

其中,配置待部署应用信息包括:应用服务器的ip地址、域名、代码库、软件包名、应用服务器的版本、编译打包工具。

其中,软件包管理模块对软件包进行信息记录包括:将数据库中存储的域名对应的id作为一级目录的目录名,在所述一级目录下存放编译日志文件和软件包。

另外,部署控制管理模块以轮询的方式发送查询包到软件包管理模块,发送查询包目的是查询指定的软件包是否存在。如果没有,再调用软件包构建模块重新打包、部署。

另外,软件包构建模块查询构建信息时,如果在数据库中查询到特征值(源码地址、分支名、版本号、编译参数)与待部署软件包相同的软件包则为同一构建任务,则把继续执行构建任务。

另外,软件包构建模块负责调用jenkins构建任务,并获取jenkins中的任务构建结果。jenkins主要负责执行构建任务。

另外,远程控制模块是一个分布式单元,分布于所有服务器上,负责应用部署系统和应用服务器的远程交互。

从以上描述可以看出,在配置待部署应用信息后,后续构建、上传、安装软件包全是自动执行的,无需人工参与,解决了软件构建、部署人工参与环节多的问题,提高了应用部署效率。增加了对软件包的管理,根据软件包构建信息和部署结果、部署好的软件包的运行状态及应用服务器的运行状态统计分析应用服务器的资源使用情况和应用部署情况,集中化进行部署管理,方便查询、分析及挖据信息。

根据本发明的实施例,本发明还提供了一种电子设备和一种计算机可读介质。

本发明的电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明实施例的一种应用部署方法。

本发明的计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明实施例的一种应用部署方法。

下面参考图5,其示出了适用于来实现本发明实施例的电子设备的计算机系统500的结构示意图。图5示出的电子设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。

如图5所示,计算机系统500包括中央处理单元(cpu)501,其可以根据存储在只读存储器(rom)502中的程序或者从存储部分508加载到随机访问存储器(ram)503中的程序而执行各种适当的动作和处理。在ram503中,还存储有计算机系统500操作所需的各种程序和数据。cpu501、rom502以及ram503通过总线504彼此相连。输入/输出(i/o)接口505也连接至总线504。

以下部件连接至i/o接口505:包括键盘、鼠标等的输入部分506;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分507;包括硬盘等的存储部分508;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分509。通信部分509经由诸如因特网的网络执行通信处理。驱动器510也根据需要连接至i/o接口505。可拆卸介质511,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器510上,以便于从其上读出的计算机程序根据需要被安装入存储部分508。

特别地,根据本发明公开的实施例,上文主要步骤图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行主要步骤图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分509从网络上被下载和安装,和/或从可拆卸介质511被安装。在该计算机程序被中央处理单元(cpu)501执行时,执行本发明的系统中限定的上述功能。

需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、rf等等,或者上述的任意合适的组合。

附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括部署信息管理模块、软件包构建模块、软件包管理模块和部署控制模块。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定,例如,部署信息管理模块还可以被描述为“配置待部署应用信息,接收应用部署指令的模块”。

作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:配置待部署应用信息,接收应用部署指令;根据配置的待部署应用信息构建待部署应用,并上传构建的软件包;对上传的软件包进行管理以对软件包进行信息记录;通知应用服务器获取软件包以便应用服务器进行安装部署。

根据本发明的技术方案,在配置待部署应用信息后,后续构建、上传、安装软件包全是自动执行的,无需人工参与,解决了软件构建、部署人工参与环节多的问题,提高了应用部署效率。增加了对软件包的管理,根据软件包构建信息和部署结果、部署好的软件包的运行状态及应用服务器的运行状态统计分析应用服务器的资源使用情况和应用部署情况,集中化进行部署管理,方便查询、分析及挖据信息。

上述产品可执行本发明实施例所提供的方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本发明实施例所提供的方法。

上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

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