CN116069341A - 一种应用程序的自动化部署方法、设备及存储介质 - Google Patents

一种应用程序的自动化部署方法、设备及存储介质 Download PDF

Info

Publication number
CN116069341A
CN116069341A CN202211579239.XA CN202211579239A CN116069341A CN 116069341 A CN116069341 A CN 116069341A CN 202211579239 A CN202211579239 A CN 202211579239A CN 116069341 A CN116069341 A CN 116069341A
Authority
CN
China
Prior art keywords
server
application program
heartbeat detection
program
application
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
Application number
CN202211579239.XA
Other languages
English (en)
Inventor
王海明
胡艺宏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xiamen Stone City Software Technology Co ltd
Original Assignee
Xiamen Stone City Software Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Xiamen Stone City Software Technology Co ltd filed Critical Xiamen Stone City Software Technology Co ltd
Priority to CN202211579239.XA priority Critical patent/CN116069341A/zh
Publication of CN116069341A publication Critical patent/CN116069341A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本公开涉及一种应用程序的自动化部署方法、设备及存储介质,该方法包括:获取设定的服务心跳检测插件;将所述服务心跳检测插件引入待部署的应用程序中,得到可运行的软件包;基于所述可运行的软件包,将所述应用程序部署在指定的服务器上;通过所述服务心跳检测插件,检测所述应用程序在所述服务器上是否启动成功;在检测到所述应用程序启动成功的情况下,确定所述应用程序部署成功。

Description

一种应用程序的自动化部署方法、设备及存储介质
技术领域
本公开实施例涉及计算机技术领域,更具体地,涉及一种应用程序的自动化部署方法、一种设备和一种存储介质。
背景技术
在应用程序的开发流程中,服务部署上线是非常重要的一个环节,服务部署上线成功与否极大影响了服务的稳定性。现有的服务部署机制,虽然能够做到较为平滑的部署,但是,当新构架的程序无法正常启动时,往往需要人工介入和手动回滚。这种方式主要存在以下缺点:需要人为关注启动过程和结果,从而进行跟踪;如遇启动失败,需要人工介入回滚,有一定的操作成本;同时回滚时间无法预估,对服务稳定性影响较大。
发明内容
本公开实施例的一个目的是提供一种服务部署的新的技术方案。
根据本公开的第一方面,提供了一种应用程序的自动化部署方法,该方法包括:
获取设定的服务心跳检测插件;
将所述服务心跳检测插件引入待部署的应用程序中,得到可运行的软件包;
基于所述可运行的软件包,将所述应用程序部署在指定的服务器上;
通过所述服务心跳检测插件,检测所述应用程序在所述服务器上是否启动成功;
在检测到所述应用程序启动成功的情况下,确定所述应用程序部署成功。
可选地,所述将所述服务心跳检测插件引入待部署的应用程序中,得到可运行的软件包,包括:
打包所述服务心跳检测插件,并将打包后的服务心跳检测插件发送至云仓库;
配置所述应用程序通过pom方式,从所述云仓库引入所述服务心跳检测插件;
打包引入所述服务心跳检测插件的所述应用程序,得到所述可运行的软件包。
可选地,所述基于所述可运行的软件包,将所述应用程序部署在指定的服务器上,包括:
将所述可运行的软件包发送至指定的服务器;
配置所述服务器停止运行所述应用程序的上一个版本的程序;
配置所述服务器在停止运行所述上一个版本的程序后,启动所述可运行的软件包。
可选地,所述通过所述服务心跳检测插件,检测所述应用程序在所述服务器上是否启动成功,包括:
基于配置的地址向所述服务器发送请求;其中,所述配置的地址为所述服务心跳检测插件中的定义拦截器所要拦截的地址;
在接收到所述服务心跳检测插件通过拦截所述配置的地址返回的响应信息的情况下,确定所述应用程序在所述服务器上启动成功;其中,所述响应信息由所述服务心跳检测插件在所拦截的地址与预期的地址一致的情况下返回。
可选地,所述通过所述服务心跳检测插件,检测所述应用程序在所述服务器上是否启动成功,还包括:
在发送所述请求的设定时间内未接收到所述响应信息的情况下,确定所述应用程序在所述服务器上启动失败;
在确定所述应用程序启动失败的情况下,配置所述服务器执行设定的回滚操作。
可选地,所述配置所述服务器执行设定的回滚操作,包括:
配置所述服务器备份所述应用程序的上一个版本的程序;
配置所述服务器移除所述应用程序;
召回备份的所述上一个版本的程序;
配置所述服务器按照指定名称修改所述上一个版本的程序文件名称;启动所述上一个版本的程序。
根据本公开的第二方面,还提供了一种应用程序的自动化部署设备,该设备包括:
插件获取模块,用于获取设定的服务心跳检测插件;
插件引入模块,用于将所述服务心跳检测插件引入待部署的应用程序中,得到可运行的软件包;
部署模块,用于基于所述可运行的软件包,将所述应用程序部署在指定的服务器上;
检测模块,用于通过所述服务心跳检测插件,检测所述应用程序在所述服务器上是否启动成功;
部署成功确定模块,用于在检测到所述应用程序启动成功的情况下,确定所述应用程序部署成功。
可选地,所述插件引入模块,具体用于:
打包所述服务心跳检测插件,并将打包后的服务心跳检测插件发送至云仓库;
配置所述应用程序通过pom方式,从所述云仓库引入所述服务心跳检测插件;
打包引入所述服务心跳检测插件的所述应用程序,得到所述可运行的软件包。
根据本公开的第三方面,还提供了一种应用程序的自动化部署设备,包括存储器和处理器,所述存储器用于存储计算机程序;所述处理器用于执行所述计算机程序,以实现根据本公开第一方面所述的方法。
根据本公开的第四方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序在被处理器执行时实现根据本公开的第一方面所述的方法。
本公开实施例的一个有益效果在于,在本公开实施例的自动化部署方法中,通过在服务部署过程中重启引入心跳检测机制,可以有效提升服务自动化构建部署中的不足,真正做到对异常启动的降级兼容,以最快最有效的方式对服务进行回滚,提升系统服务的稳定性。
通过以下参照附图对本公开的示例性实施例的详细描述,本公开实施例的其它特征及其优点将会变得清楚。
附图说明
被结合在说明书中并构成说明书的一部分的附图示出了本公开的实施例,并且连同其说明一起用于解释本公开实施例的原理。
图1是可用于实现本公开实施例的应用程序的自动化部署方法的部署系统的组成结构示意图;
图2是根据一个实施例的应用程序的自动化部署方法的流程示意图;
图3是根据另一个实施例的应用程序的自动化部署方法的流程示意图;
图4是根据一个实施例的应用程序的自动化部署设备的方框原理图;
图5是根据一个实施例的应用程序的自动化部署设备的结构示意图。
具体实施方式
现在将参照附图来详细描述本公开的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
在这里示出和讨论的所有例子中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它例子可以具有不同的值。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
在应用程序的开发流程中,服务部署上线是非常重要的一个环节,服务部署上线成功与否极大影响了服务的稳定性。现有的服务部署机制,虽然能够做到较为平滑的部署,但是,当新构架的程序无法正常启动时,往往需要人工介入和手动回滚。这种方式主要存在以下缺点:需要人为关注启动过程和结果,从而进行跟踪;如遇启动失败,需要人工介入回滚,有一定的操作成本;同时回滚时间无法预估,对服务稳定性影响较大。
<硬件配置>
图1是可用于实现本公开实施例的应用程序的自动化部署方法的部署系统100的组成结构示意图。
如图1所示,该部署系统100可以包括用户终端1000和服务器2000,该部署系统100可以应用于应用程序的自动化部署场景。
该部署系统100中的用户终端1000为运维人员使用的终端设备,本公开实施例中的用户指业务平台的运维人员,该用户终端1000例如是手机、平板电脑、其他手持设备等。
如图1所示,用户终端1000可以包括处理器1100、存储器1200、接口装置1300、通信装置1400、显示装置1500、输入装置1600、扬声器1700、麦克风1800等等。
处理器1100用于执行计算机程序,该计算机程序可以采用比如x86、Arm、RISC、MIPS、SSE等架构的指令集编写。存储器1200例如包括ROM(只读存储器)、RAM(随机存取存储器)、诸如硬盘的非易失性存储器等。接口装置1300例如包括USB接口、耳机接口等。通信装置1400例如能够进行有线或无线通信,通信装置1400可以包括至少一种短距离通信模块,例如是基于Hilink协议、WiFi(IEEE 802.11协议)、Mesh、蓝牙、ZigBee、Thread、Z-Wave、NFC、UWB、LiFi等短距离无线通信协议进行短距离无线通信的任意模块,通信装置1400也可以包括远程通信模块,例如是进行WLAN、GPRS、2G/3G/4G/5G远程通信的任意模块。显示装置1500例如是液晶显示屏、触摸显示屏等。输入装置1600例如可以包括触摸屏、键盘等。扬声器1700用于输出音频信号。麦克风1800用于采集音频信号。
该部署系统100中的服务器2000为提供处理、数据库、通讯设施的业务点。服务器2000可以是整体式服务器,跨多计算机,计算机数据中心的分散式服务器,云服务器,或者部署在云端的服务器集群等。服务器可以是各种类型的,例如但不限于,网络服务器,新闻服务器,邮件服务器,消息服务器,广告服务器,文件服务器,应用服务器,交互服务器,数据库服务器,或代理服务器。在一些实施例中,每个服务器可以包括硬件,软件,或用于执行服务器所支持或实现的合适功能的内嵌逻辑组件或两个或多个此类组件的组合。例如,服务器例如刀片服务器、云端服务器等,或者可以是由多台服务器组成的服务器群组,可以包括上述类型的服务器中的一种或多种等等。
在一些实施例中,如图1所示,服务器2000可以包括处理器2100、存储器2200、接口装置2300、通信装置2400。
处理器2100用于执行计算机程序,该计算机程序可以采用比如x86、Arm、RISC、MIPS、SSE等架构的指令集编写。存储器2200例如包括ROM(只读存储器)、RAM(随机存取存储器)、诸如硬盘的非易失性存储器等。接口装置2300例如包括各种总线接口,例如串行总线接口(包括USB接口)、并行总线接口等。通信装置2400例如能够进行有线或无线通信;通信装置2400例如可以包括进行WLAN、GPRS、3G/4G/5G远程通信的任意模块。
应当理解的是,尽管图1仅示出一个用户终端1000、一个服务器2000,但不意味着限制各自的数量,该部署系统100可以包含多个用户终端1000、多个服务器2000等。
<方法实施例>
图2是根据一个实施例的应用程序的自动化部署方法的流程示意图。
本实施例的实施主体为运维人员使用的终端设备,例如图1中的用户终端1000。
如图2所示,本实施例的应用程序的自动化部署方法可以包括如下步骤S210~S250:
步骤S210,获取设定的服务心跳检测插件。
运维人员使用终端设备获取已经设计好的服务心跳检测插件。
插件(Plug-in,又称addin、add-in、addon或add-on,又译外挂)是一种遵循一定规范的应用程序接口编写出来的程序。其只能运行在程序规定的系统平台下(可能同时支持多个平台),而不能脱离指定的平台单独运行。因为插件需要调用原纯净系统提供的函数库或者数据。很多软件都有插件,插件有无数种。例如在IE中,安装相关的插件后,WEB浏览器能够直接调用插件程序,用于处理特定类型的文件。
服务心跳检测插件是封装的组件,包括定义拦截器,用于检测应用程序是否启动成功。
所述拦截器的功能是服务器拦截所有的请求,通过对指定(配置)的请求地址进行拦截,如果是服务器预期的检测请求(约定好的请求地址),那服务器会返回一个响应信息给运维人员使用的终端设备。当运维人员使用的终端设备接收到服务器的响应信息之后,就可以判断服务器上部署的应用程序已启动。
示例性地,可以是开发人员编写服务心跳检测插件的代码,然后开发人员将编写好的代码包发送至运维人员使用的终端设备;也可以是开发人员编写服务心跳检测插件的代码,然后开发人员将编写好的代码包发送至云服务器,运维人员通过特定指令从云服务器中获取服务心跳检测插件代码包。
步骤S220,将服务心跳检测插件引入待部署的应用程序中,得到可运行的软件包。
运维人员使用终端设备将服务心跳检测插件的代码引入到应用程序中,得到具备服务心跳检测功能的软件包。
应用程序,指为完成某项或多项特定工作的计算机程序,它运行在用户模式,可以和用户进行交互,具有可视的用户界面。
软件包(SoftWare Package)是指具有特定的功能,用来完成特定任务的一个程序或一组程序。可分为应用软件包和系统软件包两大类。应用软件包与特定的应用领域有关,又可分为通用包及专用包两类。通用软件包根据社会的一些共同需求开发,专用软件包则是生产者根据用户的具体需求定制的,可以为适合其特殊需要进行修改或变更。本实施例中可运行的软件包可以是war包、jar包等。
步骤S220中将服务心跳检测插件引入待部署的应用程序中,得到可运行的软件包可以进一步包括如下步骤S221~S223:
步骤S221,打包服务心跳检测插件,并将打包后的服务心跳检测插件发送至云仓库。
运维人员使用终端设备将设计好的服务心跳检测插件的代码进行压缩打包,然后将打包的服务心跳检测插件发送至代码托管平台。
云仓库是一种代码托管平台,托管代码利用编译器把代码编译成中间语言(IL),中间语言被封装在一个叫程序集(assembly)的文件中,程序集中包含了描述创建的类,方法和属性的所有元数据。运维人员可以拷贝这个程序集到另一台服务器上进行部署。在托管执行环境中使用托管代码及其编译,可以避免许多典型的导致安全漏洞和不稳定程序的编程错误。同样,许多不可靠的设计也自动的被增强了安全性。程序员可以花更多的精力关注程序的应用逻辑设计并可以减少代码的编写量。这就意味着更短的开发时间和更健壮的程序。本实施例的云仓库可以是Gitlab、码云等。
继续上述示例,运维人员将获取的服务心跳检测插件代码包进行压缩,然后注册云仓库账户并登录、初始化远程仓库、建立新仓库并将压缩后的代码包上传至码云。
步骤S222,配置应用程序通过pom方式,从云仓库引入服务心跳检测插件。
运维人员使用终端设备将待部署的应用程序中引入服务心跳检测插件的代码。
pom是项目对象模型(Project Object Model)的简称,它是Maven项目中的文件,使用XML表示,名称叫做pom.xml。作用类似ant的build.xml文件,功能更强大。该文件用于管理:源代码、配置文件、开发者的信息和角色、问题追踪系统、组织信息、项目授权、项目的url、项目的依赖关系等等。
继续上述示例,运维人员通过pom方式,使得待部署的应用程序从码云中引入依赖,即为将待部署的应用程序中引入服务心跳检测插件的代码。
步骤S223,打包引入服务心跳检测插件的应用程序,得到可运行的软件包。
运维人员使用终端设备将引入服务心跳检测插件代码的应用程序进行打包,得到具备服务心跳检测功能的软件包。
继续上述示例,运维人员对引入服务心跳检测插件的应用程序进行压缩,得到可运行的war包。
在本实施例中,通过在应用程序中引入具有探测心跳功能的插件,可以实现自动探测应用程序是否启动成功,相比于现有的人为关注应用程序的启动结果,可以实现真正意义上的自动化部署;同时,本实施例中的服务心跳检测插件可以被引入不同的应用程序中,相比于现有的在每个应用程序中写入心跳探测代码实现探测应用程序是否启动成功,可降低人员成本和时间成本,提高效率。
步骤S230,基于可运行的软件包,将应用程序部署在指定的服务器上。
运维人员将引入服务心跳检测插件代码的应用程序进行部署上线。
部署就是使得软件或者应用程序在某一环境中运行起来,这个过程中会将源代码生成可运行的软件包,然后将软件包放到要部署的环境中,通过一些配置使得这个软件包在目标环境上也能够正常工作。
部署按照部署方式可以分为手动部署和自动化部署。
其中,手动部署方式如下:运维人员手工使用Scp、Xftp等方式来传输数据;手工登录服务器执行git pull、svn update等命令进行更新代码的操作;开发人员手工编译打包,然后通过内网传输给运维人员;运维人员通过rz上传的方式上传到目标服务器,然后,执行重命名原包、拷贝新包到目标目录,再执行服务应用重启命令完成整个部署过程。手动部署存在以下缺点:整个过程都需要人员参与,占用大量的时间,效率低下;上线、更新、回滚速度慢;存在一定的管理混乱,人为误操作的机率增大。
其中,自动化部署就是部署的过程中所有的操作全部自动化,无需人工手工干预。自动化部署的流程如下:获取代码;编译打包;移除目标服务器;解压文件到目标目录;拷贝差异化文件;重启服务;测试;重新加入集群;继续下一个节点或一组节点。自动化部署可以有效降低人员成本,提高效率。因此,本实施例采用自动化部署方式对应用程序进行部署,例如可以使用Jenkins、GitLab、Atlassian Bamboo等自动化部署工具对应用程序进行部署。
步骤S230中基于可运行的软件包,将应用程序部署在指定的服务器上可以进一步包括如下步骤S231~S233:
步骤S231,将可运行的软件包发送至指定的服务器。
运维人员将可运行的软件包放到目标环境中。
指定的服务器,即目标环境,可以是远程服务器,也可以是本地服务器。可以是整体式服务器,分散式服务器,云服务器,或者部署在云端的服务器集群等。服务器可以是各种类型的,例如但不限于,网络服务器,新闻服务器,邮件服务器,消息服务器,广告服务器,文件服务器,应用服务器,交互服务器,数据库服务器,或代理服务器。此处不做限定。
继续上述示例,运维人员将可运行的war包发送至应用程序运行时所在的服务器。
步骤S232,配置服务器停止运行应用程序的上一个版本的程序。
在部署应用程序的新版本之前,服务器需要先停止应用程序的上一个版本。
继续上述示例,运维人员启动自动部署工具,自动部署工具根据脚本发出指令,所述指令用于停止服务器的旧服务。
步骤S233,配置服务器在停止运行上一个版本的程序后,启动可运行的软件包。
服务器在停机完成之后,执行启动新上传的应用程序。
继续上述示例,自动部署工具在完成停止服务器的旧服务的脚本后,根据脚本发出指令,所述指令用于启动新的应用程序。
在本实施例中,通过对应用程序进行自动化部署,相较于现有的手动部署方式,可有效提高效率,节约人员成本和时间成本。
步骤S240,通过服务心跳检测插件,检测应用程序在服务器上是否启动成功。
利用服务心跳检测插件的检测心跳功能,对应用程序是否启动成功进行判断。
步骤S240中通过服务心跳检测插件,检测应用程序在服务器上是否启动成功可以进一步包括如下步骤S241~S242:
步骤S241,基于配置的地址向服务器发送请求。
运维人员向服务器发送请求。
配置的地址,表示指定的或者约定好的请求地址,为服务心跳检测插件中的定义拦截器所要拦截的地址。
向服务器发送的请求,可以是访问请求,也可以是检测请求。
继续上述示例,自动部署工具在启动新的应用程序后,根据脚本发出指令,所述指令用于向服务器发送检测请求。
步骤S242,在接收到服务心跳检测插件通过拦截配置的地址返回的响应信息的情况下,确定应用程序在服务器上启动成功。
运维人员通过设定时长内是否接收到响应信息,确定应用程序是否启动成功。
响应信息由服务心跳检测插件在所拦截的地址与预期的地址一致的情况下返回,响应信息可以是http响应信息。http响应信息包括响应信息行、响应信息头和响应信息正文,其中,响应信息行包含协议/版本,响应状态码,对响应状态码的描述;响应信息头表示服务器与客户端通信的暗码,告诉客户端该怎么执行某些操作;响应信息正文和网页右键“查看源码”看到的内容一样。
继续上述示例,服务心跳插件中的定义拦截器对所有请求进行拦截,当定义拦截器发现所拦截的请求地址与预期的地址一致时,服务器向请求方返回响应信息,当请求方接收到响应信息后,确认应用程序启动成功。
在本实施例中,通过引入服务心跳检测插件为应用程序进行检测,有效提升服务自动化构建部署中的不足,可提高应用程序启动检测的即时性。
步骤S250,在检测到应用程序启动成功的情况下,确定应用程序部署成功。
当运维人员确定应用程序启动成功,则表明应用程序部署成功。
部署成功,表示应用程序在目标环境中运行成功。
继续上述示例,当应用程序启动成功后,运维人员可以对下一个应用程序进行部署。
根据本实施例的应用程序的自动化部署方法,通过在服务部署过程中重启引入心跳检测机制,可以有效提升服务部署的效率;同时,心跳检测机制可以和不同的应用程序相结合,大大降低了人员成本和时间成本。
图3是根据另一个实施例的应用程序的自动化部署方法的流程示意图。
如图3所示,在一个实施例中,根据以上步骤S240通过服务心跳检测插件,检测应用程序在服务器上是否启动成功,还包括步骤S2401~S2402:
步骤S2401,在发送请求的设定时间内未接收到响应信息的情况下,确定应用程序在服务器上启动失败。
当运维人员在设定时间内没有接收到响应信息时,表明应用程序启动失败。
在服务部署的过程中,配置忘加或者是资源不足等情况都会导致应用程序在服务器上启动失败。
示例性地,服务心跳插件中的定义拦截器对所有请求进行拦截,当设定时长后,定义拦截器没有发现所拦截的请求地址与预期的地址一致时,则运维人员无法接收到响应信息,此时确认应用程序在服务器上启动失败。
步骤S2402,在确定应用程序启动失败的情况下,配置服务器执行设定的回滚操作。
当应用程序启动失败时,服务器召回应用程序的上个版本进行部署。
回滚是指当程序或数据出错时,将程序或数据恢复到最近的一个正确版本的行为。最常见的例如事务回滚、代码库回滚、部署版本回滚、数据版本回滚、静态资源版本回滚等。通过回滚机制可保证系统在某些场景下的高可用。
回滚操作只在服务启动失败的时候才会被调用,主要执行以下操作:先移除有问题的应用程序文件,接着从备份文件夹召回上个版本的应用程序文件并修改为指定名称,最后执行自动化部署完成启动,这就完成了回滚操作了。
继续上述示例,确认应用程序在服务器上启动失败后,服务器将上一个版本的应用程序召回替换掉当前的应用程序,并通过自动化部署进一步部署和探测。
在本实施例中,当应用程序启动失败时进行回滚操作,可以有效保证服务的可用性,最大限度减少部署不当带来的损失和对用户服务不可用的感知。
根据以上步骤S2402配置服务器执行设定的回滚操作,可以进一步包括步骤S2501~S2505:
步骤S2501,配置服务器备份应用程序的上一个版本的程序。
服务器备份旧应用程序包。
继续上述示例,服务器将上个版本的程序备份至文件夹。
步骤S2502,配置服务器移除应用程序。
服务器移除有问题的应用程序文件。
继续上述示例,服务器将当前启动失败的应用程序的文件进行移除。
步骤S2503,召回备份的上一个版本的程序。
服务器召回备份好的旧应用程序包。
继续上述示例,服务器从备份文件夹召回上个版本的应用程序文件。
步骤S2504,配置服务器按照指定名称修改上一个版本的程序文件名称。
服务器对旧应用程序包进行重命名。
继续上述示例,服务器将上个版本的应用程序文件的名称修改为指定名称。
步骤S2505,启动上一个版本的程序。
服务器启动旧应用程序包。
继续上述示例,服务器启动上个版本的应用程序,完成部署和探测。
根据本实施例的应用程序的自动化部署方法,通过在服务部署过程中重启引入心跳检测机制,可以有效提升服务自动化构建部署中的不足,真正做到对异常启动的降级兼容,以最快最有效的方式对服务进行回滚,提升系统服务的稳定性。
<设备实施例一>
图4是根据一个实施例的应用程序的自动化部署设备的方框原理图。
如图4所示,该自动化部署设备400可以包括插件获取模块4100、插件引入模块4200、部署模块4300、检测模块4400和部署成功确定模块4500。
插件获取模块,用于获取设定的服务心跳检测插件。
插件引入模块,用于将所述服务心跳检测插件引入待部署的应用程序中,得到可运行的软件包。
部署模块,用于基于所述可运行的软件包,将所述应用程序部署在指定的服务器上。
检测模块,用于通过所述服务心跳检测插件,检测所述应用程序在所述服务器上是否启动成功。
部署成功确定模块,用于在检测到所述应用程序启动成功的情况下,确定所述应用程序部署成功。
在一个实施例中,该插件引入模块4200,用于打包所述服务心跳检测插件,并将打包后的服务心跳检测插件发送至云仓库;配置所述应用程序通过pom方式,从所述云仓库引入所述服务心跳检测插件;打包引入所述服务心跳检测插件的所述应用程序,得到所述可运行的软件包。
在一个实施例中,该部署模块4300,用于将所述可运行的软件包发送至指定的服务器;配置所述服务器停止运行所述应用程序的上一个版本的程序;配置所述服务器在停止运行所述上一个版本的程序后,启动所述可运行的软件包。
在一个实施例中,该检测模块4400,用于基于配置的地址向所述服务器发送请求;其中,所述配置的地址为所述服务心跳检测插件中的定义拦截器所要拦截的地址;在接收到所述服务心跳检测插件通过拦截所述配置的地址返回的响应信息的情况下,确定所述应用程序在所述服务器上启动成功;其中,所述响应信息由所述服务心跳检测插件在所拦截的地址与预期的地址一致的情况下返回。
在一个实施例中,该自动化部署设备400还包括回滚操作模块(图中未示出)。
该回滚操作模块,用于在发送所述请求的设定时间内未接收到所述响应信息的情况下,确定所述应用程序在所述服务器上启动失败;在确定所述应用程序启动失败的情况下,配置所述服务器执行设定的回滚操作。
在一个实施例中,该回滚操作模块,配置所述服务器备份所述应用程序的上一个版本的程序;配置所述服务器移除所述应用程序;召回备份的所述上一个版本的程序;配置所述服务器按照指定名称修改所述上一个版本的程序文件名称;启动所述上一个版本的程序。
根据本实施例的应用程序的自动化部署设备400,通过在服务部署过程中重启引入心跳检测机制,可以有效提升服务自动化构建部署中的不足,真正做到对异常启动的降级兼容,以最快最有效的方式对服务进行回滚,提升系统服务的稳定性。
<设备实施例二>
图5是根据一个实施例的应用程序的自动化部署设备的结构示意图。
如图5所示,该自动化部署设备500包括处理器510和存储器520,该存储器520用于存储可执行的计算机程序,该处理器510用于根据该计算机程序的控制,执行如以上任意方法实施例的方法。
<介质实施例>
在本实施例中,还提供一种计算机可读存储介质,该计算机可读存储介质存储有可被计算机读取并运行的计算机程序,所述计算机程序用于在被所述计算机读取运行时,执行如本公开以上任意实施例所述的方法。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。对于本领域技术人员来说公知的是,通过硬件方式实现、通过软件方式实现以及通过软件和硬件结合的方式实现都是等价的。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。本发明的范围由所附权利要求来限定。

Claims (10)

1.一种应用程序的自动化部署方法,包括:
获取设定的服务心跳检测插件;
将所述服务心跳检测插件引入待部署的应用程序中,得到可运行的软件包;
基于所述可运行的软件包,将所述应用程序部署在指定的服务器上;
通过所述服务心跳检测插件,检测所述应用程序在所述服务器上是否启动成功;
在检测到所述应用程序启动成功的情况下,确定所述应用程序部署成功。
2.根据权利要求1所述的方法,其中,所述将所述服务心跳检测插件引入待部署的应用程序中,得到可运行的软件包,包括:
打包所述服务心跳检测插件,并将打包后的服务心跳检测插件发送至云仓库;
配置所述应用程序通过pom方式,从所述云仓库引入所述服务心跳检测插件;
打包引入所述服务心跳检测插件的所述应用程序,得到所述可运行的软件包。
3.根据权利要求1所述的方法,其中,所述基于所述可运行的软件包,将所述应用程序部署在指定的服务器上,包括:
将所述可运行的软件包发送至指定的服务器;
配置所述服务器停止运行所述应用程序的上一个版本的程序;
配置所述服务器在停止运行所述上一个版本的程序后,启动所述可运行的软件包。
4.根据权利要求1所述的方法,其中,所述通过所述服务心跳检测插件,检测所述应用程序在所述服务器上是否启动成功,包括:
基于配置的地址向所述服务器发送请求;其中,所述配置的地址为所述服务心跳检测插件中的定义拦截器所要拦截的地址;
在接收到所述服务心跳检测插件通过拦截所述配置的地址返回的响应信息的情况下,确定所述应用程序在所述服务器上启动成功;其中,所述响应信息由所述服务心跳检测插件在所拦截的地址与预期的地址一致的情况下返回。
5.根据权利要求4所述的方法,其中,所述通过所述服务心跳检测插件,检测所述应用程序在所述服务器上是否启动成功,还包括:
在发送所述请求的设定时间内未接收到所述响应信息的情况下,确定所述应用程序在所述服务器上启动失败;
在确定所述应用程序启动失败的情况下,配置所述服务器执行设定的回滚操作。
6.根据权利要求5所述的方法,其中,所述配置所述服务器执行设定的回滚操作,包括:
配置所述服务器备份所述应用程序的上一个版本的程序;
配置所述服务器移除所述应用程序;
召回备份的所述上一个版本的程序;
配置所述服务器按照指定名称修改所述上一个版本的程序文件名称;
启动所述上一个版本的程序。
7.一种应用程序的自动化部署设备,包括:
插件获取模块,用于获取设定的服务心跳检测插件;
插件引入模块,用于将所述服务心跳检测插件引入待部署的应用程序中,得到可运行的软件包;
部署模块,用于基于所述可运行的软件包,将所述应用程序部署在指定的服务器上;
检测模块,用于通过所述服务心跳检测插件,检测所述应用程序在所述服务器上是否启动成功;
部署成功确定模块,用于在检测到所述应用程序启动成功的情况下,确定所述应用程序部署成功。
8.根据权利要求7所述的设备,其中,所述插件引入模块,具体用于:
打包所述服务心跳检测插件,并将打包后的服务心跳检测插件发送至云仓库;
配置所述应用程序通过pom方式,从所述云仓库引入所述服务心跳检测插件;
打包引入所述服务心跳检测插件的所述应用程序,得到所述可运行的软件包。
9.一种应用程序的自动化部署设备,包括存储器和处理器,所述存储器用于存储计算机程序;所述处理器用于执行所述计算机程序,以实现根据权利要求1-6中任意一项所述的方法。
10.一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序在被处理器执行时实现根据权利要求1-6中任意一项所述的方法。
CN202211579239.XA 2022-12-07 2022-12-07 一种应用程序的自动化部署方法、设备及存储介质 Pending CN116069341A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211579239.XA CN116069341A (zh) 2022-12-07 2022-12-07 一种应用程序的自动化部署方法、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211579239.XA CN116069341A (zh) 2022-12-07 2022-12-07 一种应用程序的自动化部署方法、设备及存储介质

Publications (1)

Publication Number Publication Date
CN116069341A true CN116069341A (zh) 2023-05-05

Family

ID=86179402

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211579239.XA Pending CN116069341A (zh) 2022-12-07 2022-12-07 一种应用程序的自动化部署方法、设备及存储介质

Country Status (1)

Country Link
CN (1) CN116069341A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116775047A (zh) * 2023-08-18 2023-09-19 北京偶数科技有限公司 一种ai模型服务集群架构的部署方法、装置及介质
CN117389597A (zh) * 2023-12-07 2024-01-12 智慧足迹数据科技有限公司 一种Web应用程序更新方法、系统、设备及存储介质

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116775047A (zh) * 2023-08-18 2023-09-19 北京偶数科技有限公司 一种ai模型服务集群架构的部署方法、装置及介质
CN117389597A (zh) * 2023-12-07 2024-01-12 智慧足迹数据科技有限公司 一种Web应用程序更新方法、系统、设备及存储介质
CN117389597B (zh) * 2023-12-07 2024-04-02 智慧足迹数据科技有限公司 一种Web应用程序更新方法、系统、设备及存储介质

Similar Documents

Publication Publication Date Title
CN108196915B (zh) 基于应用容器引擎的代码处理方法、设备及存储介质
CN106156186B (zh) 一种数据模型管理装置、服务器及数据处理方法
CN107608710B (zh) 基于Jenkins工具的软件项目构建任务配置方法及装置
EP1872227B1 (en) System and method of testing wireless component applications
CN116069341A (zh) 一种应用程序的自动化部署方法、设备及存储介质
AU2019202251A1 (en) Automated program code analysis and reporting
US8375383B2 (en) Rolling upgrades in distributed applications
CN113434158B (zh) 一种大数据组件的自定义管理方法、装置、设备及介质
CN110647332A (zh) 基于容器云的软件部署方法和装置
CN110858172A (zh) 一种自动化测试代码生成方法和装置
CN108228190B (zh) 持续集成和交付方法、系统、设备及计算机可读存储介质
CN111767208A (zh) 一种自动测试方法及装置
CN111144839A (zh) 一种项目构建方法、持续集成系统及终端设备
CN111651352B (zh) 一种仓库代码的合并方法及装置
CN112860645A (zh) 一种离线压缩文件的处理方法、装置、计算机设备及介质
CN115658496A (zh) 可扩展的Web自动化测试方法、系统、设备及存储介质
CN113127009A (zh) 大数据管理平台的自动化部署方法和装置
US11200052B1 (en) Documentation enforcement during compilation
CN114461262A (zh) 数据处理方法、系统、装置、设备,及计算机存储介质
CN108170588B (zh) 一种测试环境搭建方法及装置
CN113138768A (zh) 应用程序包生成方法、装置、电子设备以及可读存储介质
US7437705B1 (en) System and method for building an application on a computing device which includes an environment-controlling process
CN111831567A (zh) 应用的测试环境配置方法、装置、系统和介质
CN115729590A (zh) 服务部署方法、装置、设备和计算机可读存储介质
CN112783903B (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