一种自动化高效进行软件更新版本发布的系统的制作方法

文档序号:14714012发布日期:2018-06-16 00:58阅读:158来源:国知局
一种自动化高效进行软件更新版本发布的系统的制作方法

本发明属于信息处理技术领域,具体涉及一种自动化高效进行软件更新版本发布的系统。



背景技术:

在互联网场景中,软件常常需要被不断更新,软件更新版本的上线部署非常重要。目前,很多公司普遍使用人工登录客户端上线软件更新版本代码,具有以下不足:(1)频繁的上线工作,占用运维人员大量的工作时间,导致软件更新版本发布效率低;(2)在软件更新版本上线升级过程中,如果升级失败,需要人工手动回滚到旧软件版本,由于人工手动回滚速度慢,因此,不能快速回滚到旧软件版本,延迟服务出错的时间,影响了用户的使用体验。(3)运维人员需要全程参与软件更新版本上线过程。一个小失误可能导致整个发布失败,服务不可用。



技术实现要素:

针对现有技术存在的缺陷,本发明提供一种自动化高效进行软件更新版本发布的系统,可有效解决上述问题。

本发明采用的技术方案如下:

本发明提供一种自动化高效进行软件更新版本发布的系统,包括管理端、服务端和客户端;

所述管理端,用于创建发布模板,并向所述发布模板中填入发布配置信息;其中,所述发布配置信息包括:待发布客户端ID、待发布软件更新版本代码类型、待发布软件更新版本安装目录、执行文件夹路径、待发布软件更新版本地址、启动脚本路径以及升级失败时是否自动回滚信息;然后,所述管理端将所述发布模板中的所述发布配置信息封闭为任务描述信息,并将所述任务描述信息下发给所述服务端;

所述服务端,用于接收来自于所述管理端的所述任务描述信息,对所述任务描述信息进行解析,得到具体的所述发布配置信息,由此使所述服务端获得所述待发布客户端ID;然后,所述服务端将所述任务描述信息下发给对应的待发布客户端;

所述客户端,用于接收来自于所述服务端的所述任务描述信息,并执行所述任务描述信息;具体执行过程为:(1)所述客户端解析所述任务描述信息,得到待发布软件更新版本代码类型、待发布软件更新版本安装目录、执行文件夹路径、待发布软件更新版本地址、启动脚本路径以及升级失败时是否自动回滚信息;(2)然后,所述客户端根据所述待发布软件更新版本代码类型,创建对应的操作类;(3)所述操作类对发布环境和所述任务描述信息的规范性进行检查,如果检查不通过,则停止发布软件更新版本;如果检查通过,所述操作类根据所述待发布软件更新版本安装目录,在所述待发布软件更新版本安装目录创建部署文件夹;(4)然后,所述操作类采用备份文件夹备份线上环境已有的旧软件版本代码,并根据所述待发布软件更新版本地址,下载到待发布软件更新版本;然后,所述操作类根据所述执行文件夹路径,定位到执行文件夹;然后,所述操作类将下载到的所述待发布软件更新版本复制到所述执行文件夹;再将所述执行文件夹中的所述待发布软件更新版本复制到所述部署文件夹;(5)然后,所述操作类根据所述启动脚本路径,调用到所述启动脚本,所述启动脚本执行所述部署文件夹中的所述待发布软件更新版本,将所述待发布软件更新版本发布到对应的客户端;其中,如果所述升级失败时是否自动回滚信息配置为升级失败时自动回滚信息,则在将所述待发布软件更新版本发布到对应的客户端的过程中,如果升级失败,则所述启动脚本立即从所述备份文件夹中读取到所述旧软件版本代码,并将所述旧软件版本代码复制到所述部署文件夹,然后,所述启动脚本执行所述部署文件夹中的所述旧软件版本代码,将所述旧软件版本代码发布到对应的客户端,实现自动回滚旧版本的功能。

优选的,所述待发布软件更新版本代码类型包括四种,分别为:tomcat代码类型、windows iis代码类型、windows service代码类型和.net代码类型。

优选的,tomcat代码类型对应的操作类为MultiTomcatDeployer操作类;windows iis代码类型对应的操作类为ArchiveDeployer;windows service代码类型对应的操作类为RpmDeployer;.net代码类型对应的操作类为ArchiveDeployer。

优选的,所述发布配置信息还包括以下发布配置信息:是否从负载均衡里先禁用被升级的客户端、是否从监控里禁用被升级的客户端、升级后是否从监控里启用对应的客户端以及升级后是否从负载均衡里启用对应的客户端。

优选的,如果配置为从负载均衡里先禁用被升级的客户端、从监控里禁用被升级的客户端、升级后从监控里启用对应的客户端以及升级后从负载均衡里启用对应的客户端,则所述启动脚本执行所述部署文件夹中的所述待发布软件更新版本之前,首先从负载均衡里先禁用被升级的客户端,以及首先从监控里禁用被升级的客户端;在升级成功后,所述启动脚本从监控里启用对应的客户端以及从负载均衡里启用对应的客户端。

本发明提供的自动化高效进行软件更新版本发布的系统具有以下优点:

通过本发明提供的一种自动化高效进行软件更新版本发布的系统,整个软件更新版本上线过程简单高效,有效降低了运维人员的工作量和工作强度,提高了软件更新版本发布的效率。同时,通过规范软件更新版本发布过程,使得整个软件更新版本上线的成功率大大提高,回滚速度变快,保证了线上业务长期稳定的提供服务。

附图说明

图1为本发明提供的自动化高效进行软件更新版本发布的系统的结构示意图;

图2为客户端具体执行过程示意图。

具体实施方式

为了使本发明所解决的技术问题、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。

本发明提供一种自动化高效进行软件更新版本发布的系统,参考图1,包括管理端、服务端和客户端;

所述管理端,用于创建发布模板,并向所述发布模板中填入发布配置信息;其中,所述发布配置信息包括:待发布客户端ID、待发布软件更新版本代码类型、待发布软件更新版本安装目录、执行文件夹路径、待发布软件更新版本地址、启动脚本路径以及升级失败时是否自动回滚信息;其中,待发布软件更新版本代码类型包括但不限于以下四种,分别为:tomcat代码类型、windows iis代码类型、windows service代码类型和.net代码类型。然后,所述管理端将所述发布模板中的所述发布配置信息封闭为任务描述信息,并将所述任务描述信息下发给所述服务端;实际应用中,管理端采用webManager,为系统前端配置模块,运维人员通过管理端进行发布模板的配置。配置完发布模板后,将发布配置信息存入到mysql数据库中。因此,对于运维人员来讲,不再需要参与后续的软件更新版本发布过程,只需要通过webManager点击要发布的模板进行部署代码,选择好需要发布的软件更新版本之后,点击确认发布即可。

所述服务端,用于接收来自于所述管理端的所述任务描述信息,对所述任务描述信息进行解析,得到具体的所述发布配置信息,由此使所述服务端获得所述待发布客户端ID;然后,所述服务端将所述任务描述信息下发给对应的待发布客户端;具体的,服务端采用SaltMaster,SaltMaster为发布系统的中控机,与webManager通过HTTP API进行通讯,接受开发人员部署代码的任务描述信息。同时SaltMaster和客户端SaltMinion通讯,管控所有要发布的客户端。SaltMaster会将接受到的任务描述信息转给SaltMinion。

所述客户端,用于接收来自于所述服务端的所述任务描述信息,并执行所述任务描述信息;客户端采用SaltMinion,在每一台需要发布的服务器上运行,其作用是接收SaltMaster传过来的任务描述信息,解析并执行该任务描述信息。

参考图2,客户端具体执行过程为:

(1)所述客户端解析所述任务描述信息,得到待发布软件更新版本代码类型、待发布软件更新版本安装目录、执行文件夹路径、待发布软件更新版本地址、启动脚本路径以及升级失败时是否自动回滚信息;

(2)然后,所述客户端根据所述待发布软件更新版本代码类型,创建对应的操作类;具体的,通过BaseDeployer类中继承对应不同软件更新版本代码类型的类,tomcat代码类型对应的操作类为MultiTomcatDeployer操作类;windows iis代码类型对应的操作类为ArchiveDeployer;windows service代码类型对应的操作类为RpmDeployer;.net代码类型对应的操作类为ArchiveDeployer。上述操作类根据任务描述信息中的类型的字段,通过工厂类DeployerFactory创建。

操作类将每次发布任务拆分成四个过程:Prepare,Pre-deploy,Deploye,Post-deploy,分别对应准备,发布前,发布中和发布后四个阶段。

(3)准备阶段:所述操作类对发布环境和所述任务描述信息的规范性进行检查,如果检查不通过,则停止发布软件更新版本,返回给开发人员错误信息到webManager;如果检查通过,所述操作类根据所述待发布软件更新版本安装目录,在所述待发布软件更新版本安装目录创建部署文件夹;

(4)发布前阶段:所述操作类采用备份文件夹备份线上环境已有的旧软件版本代码,这一步非常重要,如果系统有任何问题,都能保证老版本线上代码被找回,停止服务。

发布中阶段:所述操作类根据所述待发布软件更新版本地址,下载到待发布软件更新版本;然后,所述操作类根据所述执行文件夹路径,定位到执行文件夹;然后,所述操作类将下载到的所述待发布软件更新版本复制到所述执行文件夹;再将所述执行文件夹中的所述待发布软件更新版本复制到所述部署文件夹;

(5)然后,所述操作类根据所述启动脚本路径,调用到所述启动脚本,所述启动脚本执行所述部署文件夹中的所述待发布软件更新版本,将所述待发布软件更新版本发布到对应的客户端;其中,如果所述升级失败时是否自动回滚信息配置为升级失败时自动回滚信息,则在将所述待发布软件更新版本发布到对应的客户端的过程中,如果升级失败,则所述启动脚本立即从所述备份文件夹中读取到所述旧软件版本代码,并将所述旧软件版本代码复制到所述部署文件夹,然后,所述启动脚本执行所述部署文件夹中的所述旧软件版本代码,将所述旧软件版本代码发布到对应的客户端,实现自动回滚旧版本的功能。

发布后:发布后,启动脚本返回发布过程的最终结果到webManager,整个发布流程结束。

实际应用中,所述发布配置信息还包括以下发布配置信息:是否从负载均衡里先禁用被升级的客户端、是否从监控里禁用被升级的客户端、升级后是否从监控里启用对应的客户端以及升级后是否从负载均衡里启用对应的客户端。

如果配置为从负载均衡里先禁用被升级的客户端、从监控里禁用被升级的客户端、升级后从监控里启用对应的客户端以及升级后从负载均衡里启用对应的客户端,则所述启动脚本执行所述部署文件夹中的所述待发布软件更新版本之前,首先从负载均衡里先禁用被升级的客户端,以及首先从监控里禁用被升级的客户端;在升级成功后,所述启动脚本从监控里启用对应的客户端以及从负载均衡里启用对应的客户端。

在上述步骤中的系统架构以及SaltMinion解析发布任务信息的过程是本技术的关键点。通过切分成的四个阶段,可以支撑不同类型发布任务。

由此可见,通过本发明,只需配置好不同类型的发布模板之后,开发人员可以选择需要发布的版本和客户端,即可自助的完成部署工作。代码发布后,系统会根据配置的发布模板,在选择的服务器上下载代码文件,执行不同发布类型应该执行的操作,启动服务,返回发布状态给开发人员,完成整个发布的流程。可见,运维人员不必全程介入整个发布流程;一个发布模板直接可以选择发布到多个客户端上,发布的客户端再多也不是问题;对于不同的发布类型,由系统决定执行对应的发布方式;当发布遇到问题的时候,系统可以自动选择旧软件版本再次发布,做到快速的回滚流程。

通过本发明提供的一种自动化高效进行软件更新版本发布的系统,整个软件更新版本上线过程简单高效,有效降低了运维人员的工作量和工作强度,提高了软件更新版本发布的效率。同时,通过规范软件更新版本发布过程,使得整个软件更新版本上线的成功率大大提高,回滚速度变快,保证了线上业务长期稳定的提供服务。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。

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