CN110321254B - 软件版本回滚方法、装置、服务器及存储介质 - Google Patents
软件版本回滚方法、装置、服务器及存储介质 Download PDFInfo
- Publication number
- CN110321254B CN110321254B CN201910619035.6A CN201910619035A CN110321254B CN 110321254 B CN110321254 B CN 110321254B CN 201910619035 A CN201910619035 A CN 201910619035A CN 110321254 B CN110321254 B CN 110321254B
- Authority
- CN
- China
- Prior art keywords
- version
- component
- version information
- rolled back
- information
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本公开提出一种软件版本回滚方法、装置、服务器及存储介质,涉及软件技术领域。该方法包括:接收针对目标软件的回滚指令,其中,回滚指令携带有待回滚的版本号,基于待回滚的版本号,从版本信息库获取待回滚的版本信息,其中,版本信息库存储目标软件的至少一个历史版本的版本信息,版本信息包括版本号、项目标识、至少一个组件的组件信息和更新日期,组件信息包括组件代码标识和组件标识,基于待回滚的版本信息,从中间件存储***获取至少一个待回滚的组件,中间件存储***中存储有至少一个历史版本的版本信息所对应的组件,根据至少一个待回滚的组件对目标软件执行回滚。本公开能够实现对目标软件进行回滚功能。
Description
技术领域
本公开涉及软件技术领域,具体而言,涉及一种软件版本回滚方法、装置、服务器及存储介质。
背景技术
持续交付(Continuous delivery,简称CD)是一种软件工程方法,能够使软件的产出过程在一个短周期内完成,以保证软件可以稳定、持续的保持在随时可以发布的状态,其目标在于让软件的构建、测试与发布变得更快以及更频繁,从而减少软件开发的成本与时间,减少风险。其中,软件版本信息是将持续交付中各阶段进行关联的重要数据。
现有技术中,可以存储当前版本的版本号以及所部署组件的组件标识,而在持续交付的过程中,可能需要对软件版本进行回滚,仅依据上述信息难以实现版本回滚功能。
发明内容
本公开的目的在于提供一种软件版本回滚方法、装置、服务器及存储介质,以实现对目标软件进行回滚功能。
为了实现上述目的,本公开采用的技术方案如下:
第一方面,本公开提出一种软件版本回滚方法,包括:
接收针对目标软件的回滚指令,其中,所述回滚指令携带有待回滚的版本号;
基于所述待回滚的版本号,从版本信息库获取待回滚的版本信息,其中,所述版本信息库存储所述目标软件的至少一个历史版本的版本信息,所述版本信息包括版本号、项目标识、至少一个组件的组件信息和更新日期,所述组件信息包括组件代码标识和组件标识;
基于所述待回滚的版本信息,从中间件存储***获取至少一个待回滚的组件,所述中间件存储***中存储有至少一个所述历史版本所对应的组件;
根据至少一个所述待回滚的组件对所述目标软件执行回滚。
可选地,所述基于所述待回滚的版本号,从版本信息库获取待回滚的版本信息,包括:
基于所述待回滚的版本号,从所述版本信息库获取包括所述待回滚的版本号的第一版本信息;
基于所述第一版本信息所包括的更新日期,从所述版本信息库中获取第二版本信息,所述第二版本信息包括的更新日期与所述第一版本信息包括的更新日期相同,或,在所述第一版本信息包括的更新日期之前;
将所述第一版本信息和所述第二版本信息确定为所述待回滚的版本信息。
可选地,所述基于所述待回滚的版本信息,从中间件存储***获取至少一个待回滚的组件,包括:
从所述待回滚的版本信息中获取至少一个所述组件的组件信息以及所述待回滚的版本信息所包括的更新日期;
当一个以上的所述待回滚的版本信息中包括同一所述组件的组件信息时,基于包括所述组件的组件信息且更新日期距离当前时刻最近的所述待回滚的版本信息,从所述中间件存储***获取所述组件作为所述待回滚的组件。
可选地,所述方法还包括:
获取所述目标软件当前版本的版本号;
构建对应所述当前版本至少一个待部署的组件,并生成所述当前版本的版本信息;
将所述当前版本的版本信息存储至所述版本信息库,并将至少一个所述待部署的组件存储至所述中间件存储***。
可选地,所述将至少一个所述待部署的组件存储至所述中间件存储***,包括:
将至少一个所述待部署的组件打包,得到组件整合包;
基于所述当前版本的版本信息,将所述组件整合包存储至所述中间件存储***。
可选地,所述方法还包括:
当接收到针对所述当前版本的部署指令时,基于所述部署指令,从所述中间件存储***获取所述组件整合包,所述部署指令中携带所述当前版本的版本信息;
部署所述组件整合包括的至少一个所述待部署的组件。
第二方面,本公开还提出一种软件版本回滚装置,包括:
接收模块,用于接收针对目标软件的回滚指令,其中,所述回滚指令携带有待回滚的版本号;
第一获取模块,用于基于所述待回滚的版本号,从版本信息库获取待回滚的版本信息,其中,所述版本信息库存储所述目标软件的至少一个历史版本的版本信息,所述版本信息包括版本号、项目标识、至少一个组件的组件信息和更新日期,所述组件信息包括组件代码标识和组件标识;
第二获取模块,用于基于所述待回滚的版本信息,从中间件存储***获取至少一个待回滚的组件,所述中间件存储***中存储有至少一个所述历史版本所对应的组件;
回滚模块,用于根据至少一个所述待回滚的组件对所述目标软件执行回滚。
可选地,所述第一获取模块具体用于:
基于所述待回滚的版本号,从所述版本信息库获取包括所述待回滚的版本号的第一版本信息;
基于所述第一版本信息所包括的更新日期,从所述版本信息库中获取第二版本信息,所述第二版本信息包括的更新日期与所述第一版本信息包括的更新日期相同,或,在所述第一版本信息包括的更新日期之前;
将所述第一版本信息和所述第二版本信息确定为所述待回滚的版本信息。
可选地,所述第二获取模块具体用于:
从所述待回滚的版本信息中获取至少一个所述组件的组件信息以及所述待回滚的版本信息所包括的更新日期;
当一个以上的所述待回滚的版本信息中包括同一所述组件的组件信息时,基于包括所述组件的组件信息且更新日期距离当前时刻最近的所述待回滚的版本信息,从所述中间件存储***获取所述组件作为所述待回滚的组件。
可选地,所述装置还包括:
第三获取模块,用于获取所述目标软件当前版本的版本号;
构建模块,用于构建对应所述当前版本至少一个待部署的组件,并生成所述当前版本的版本信息;
存储模块,用于将所述当前版本的版本信息存储至所述版本信息库,并将至少一个所述待部署的组件存储至所述中间件存储***。
可选地,所述存储模块具体用于:
将至少一个所述待部署的组件打包,得到组件整合包;
基于所述当前版本的版本信息,将所述组件整合包存储至所述中间件存储***。
可选地,所述装置还包括:
第四获取模块,用于当接收到针对所述当前版本的部署指令时,基于所述部署指令,从所述中间件存储***获取所述组件整合包,所述部署指令中携带所述当前版本的版本信息;
部署模块,用于部署所述组件整合包括的至少一个所述待部署的组件。
第三方面,本公开还提出一种服务器,包括:处理器、存储介质和总线,所述存储介质存储有所述处理器可执行的机器可读指令,当所述服务器运行时,所述处理器与所述存储介质之间通过所述总线通信,所述处理器执行所述机器可读指令,以执行如前述第一方面所述方法的步骤。
第四方面,本公开还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行前述第一方面所述方法的步骤。
在本公开实施例中,目标软件可能包括至少一个的组件以及至少一个的历史版本,且各个历史版本所需的组件可能不同,即目标版本在不同的历史版本可能有不同的状态属性,而版本信息库包括至少一个历史版本的版本信息,且版本信息包括版本号、项目标识、至少一个组件的组件信息和更新日期,中间件存储***存储有至少一个历史版本对应的组件,那么在接收针对目标软件的回滚指令时,基于该回滚指令所携带的待回滚的版本号,可以从版本信息库获取待回滚的版本信息,该待回滚的版本信息即能够准确地指示说明待回滚的各组件,基于该待回滚的版本信息即能够从中间件存储***准确地获取得到待回滚的组件,从而可以基于待回滚的组件,准确可靠地对目标软件进行回滚。
本公开的其他特征和优点将在随后的说明书阐述,并且,部分地从说明书中变得显而易见,或者通过实施本公开了解。本公开的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
为了更清楚地说明本公开的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本公开所提供的一种软件版本回滚方法的流程示意图;
图2示出了本公开所提供的另一种软件版本回滚方法的流程示意图;
图3示出了本公开所提供的一种软件版本回滚装置的功能模块示意图;
图4示出了本公开所提供的另一种软件版本回滚装置的功能模块示意图;
图5示出了本公开所提供的另一种软件版本回滚装置的功能模块示意图;
图6示出了本公开所提供的一种服务器的功能模块示意图。
具体实施方式
下面将结合本公开中附图,对本公开中的技术方案进行清楚、完整地描述。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
请参照图1,为本公开所提供的一种软件版本回滚方法的流程示意图。该方法可以应用于服务器或者云平台中。需要说明的是,本公开所述的软件版本回滚方法并不以图1以及以下所述的具体顺序为限制,应当理解,在其它实施例中,本公开所述的软件版本回滚方法其中部分步骤的顺序可以根据实际需要相互交换,或者其中的部分步骤也可以省略或删除。下面将对图1所示的流程进行详细阐述。
步骤101,接收针对目标软件的回滚指令,其中,该回滚指令携带有待回滚的版本号。
为了实现对目标软件进行回滚,可以接收针对目标软件的回滚指令,且由于该目标软件可能在当前时刻之前经过多次的更新,即可能会有至少一个的历史版本,因此,为了确定所回滚的版本,该回滚指令中可以携带待回滚的版本号。
目标软件为当前需要进行版本回滚的软件。
需要说明的是,目标软件可以安装于远程的主机等电子设备上,当然也可以安装于执行软件版本回滚操作的服务器上,也即是,本公开所提供的软件版本回滚方法可以针对同一设备中的软件进行回滚,也可以针对其它设备中的软件进行回滚。
针对目标软件的回滚指令用于指示对目标软件进行回滚。该回滚指令可以由用户通过执行预设操作触发,或者可以根据预设触发条件触发。
版本号用于说明目标软件的版本,从而可以根据该版本号对目标软件进行管理。该版本号可以包括具有特定含义的字符或字符串。
例如,版本号的数据结构可以包括“主版本号.次版本号.修订版本号.新增版本号”。如v.1.3.2.7,其中,1代表当前项目主要版本;3代表次要版本;2代表主要修订版本,用于修复当前版本反馈的问题;7代表额外的版本说明,可以自定义它的作用。
需要说明的是,在实际应用中,回滚指令也可以携带更多的与进行版本回滚相关的信息,比如,还可以包括目标软件的名称或标识。
历史版本为目标软件在当前时刻之前所部署的版本。
步骤102,基于待回滚的版本号,从版本信息库获取待回滚的版本信息,其中,该版本信息库存储目标软件的至少一个历史版本的版本信息,该版本信息包括版本号、项目标识、至少一个组件的组件信息和更新日期,该组件信息包括组件代码标识和组件标识。
由于目标软件可能包括至少一个的组件以及至少一个的历史版本,且各个历史版本所包的组件可能不同,即目标版本在不同的历史版本可能有不同的状态属性。为了准确地将目标软件回滚至待回滚的版本号所对应的历史版本,可以从版本信息库获取待回滚的版本信息。
版本信息库用于存储版本信息。
其中,该版本信息库可以以各历史版本的版本号为索引,将各历史版本对应的版本信息进行存储,或者,为了便于查找版本信息或对该版本信息进行管理,减少版本信息的数据量,该版本信息库可以以数据表的形式存储各版本信息。
项目标识可以包括目标软件的名称。
组件信息可以包括与组件相关的信息,例如,组件信息包括组件代码标识和组件标识,组件标识为对组件进行标识的信息,组件代码标识为对构建该组件所需的程序代码进行标识的信息。
更新日期为部署相应历史版本的目标软件的日期。
可以基于待回滚的版本号,从版本信息库对各历史版本的版本信息进行遍历,获取到待回滚的版本所包括的项目标识、至少一个组件的组件信息以及更新日期,从而得到待回滚的版本信息。
例如,版本信息库中存储的历史版本的版本信息包括版本1、版本2和版本3。其中,版本1的版本信息包括版本号为1.0、项目标识为pro1、组件A、组件代码标识A001、更新日期为2015年1月1日;版本2的版本信息包括版本号为2.0、项目标识为pro1、组件A、组件A的组件代码标识A001、组件B、组件B的组件代码标识B001、更新日期为2015年2月1日;版本3的版本信息包括版本号为3.0、项目标识为pro1、组件A、组件A的组件代码标识A001、组件B、组件B的组件代码标识B001、组件C、组件C的组件代码标识C001、更新日期为2015年3月1日。若获取到的待回滚的版本号包括2.0,则可以根据该版本号2.0,从版本信息库中获取得到版本2的版本信息作为待回滚的版本信息。
步骤103,基于待回滚的版本信息,从中间件存储***获取至少一个待回滚的组件,该中间件存储***中存储有至少一个历史版本所对应的组件。
由于已经确定了待回滚的版本信息,其中包括了待回滚的版本所包括组件的组件信息,可以按照待回滚的版本信息,获取得到至少一个的回滚组件。
中间件存储***用于存储构建完成组件,确保在部署组件时,可以直接获取到组件,而不需要重复构建组件。
例如,中间件存储***可以包括Yar***,其中,Yar***是一个轻量级的并行的RPC(Remote Procedure Call,远程过程调用)框架。
其中,中间件存储***可以基于各历史版本的版本信息,对该历史版本的组件进行存储。
例如,中间件存储***的存储结构可以包括“项目标识/组件标识/版本号/组件代码标识/组件”。
当然,上述仅以一种示例,对中间件存储***基于历史版本的版本信息,对该历史版本的组件进行存储进行说明,在实际应用中,中间件存储***也可以通过其它方式来基于历史版本的版本信息,对该历史版本的组件进行存储,本公开实施例对此不做具体限定。
还需要说明的是,该中间件存储***可以部署在当前的服务器中,也可以部署在其它的设备中,本公开实施例对此中间件存储***的部署方式不做具体限定。
步骤104,根据至少一个待回滚的组件对目标软件执行回滚。
获取到该回滚的组件后,可以重新部署至少一个待回滚的组件,从而得到回滚后的目标软件。
在本公开实施例中,目标软件可能包括至少一个的组件以及至少一个的历史版本,且各个历史版本所需的组件可能不同,即目标版本在不同的历史版本可能有不同的状态属性,而版本信息库包括至少一个历史版本的版本信息,且版本信息包括版本号、项目标识、至少一个组件的组件信息和更新日期,中间件存储***存储有至少一个历史版本对应的组件,那么在接收针对目标软件的回滚指令时,基于该回滚指令所携带的待回滚的版本号,可以从版本信息库获取待回滚的版本信息,该待回滚的版本信息即能够准确地指示说明待回滚的各组件,基于该待回滚的版本信息即能够从中间件存储***准确地获取得到待回滚的组件,从而可以基于待回滚的组件,准确可靠地对目标软件进行回滚。
请参照图2,为本公开所提供的一种软件版本回滚方法的流程示意图。需要说明的是,本公开所述的软件版本回滚方法并不以图2以及以下所述的具体顺序为限制,应当理解,在其它实施例中,本公开所述的软件版本回滚方法其中部分步骤的顺序可以根据实际需要相互交换,或者其中的部分步骤也可以省略或删除。下面将对图2所示的流程进行详细阐述。
步骤201,获取目标软件当前版本的版本号。
为了确保对所部署的目标软件的当前版本进行标识,从而便于后续按照版本对该所部属的目标软件进行管理,比如回滚等操作,可以获取目标软件当前版本的版本号。
可以基于预设版本创建规则,生成得到版本号。
其中,预设版本创建规则用于指示创建版本号,该预设版本创建规则可以包括前述中的版本号的数据结构。
另外,在本公开的另一可选实施例中,也可以接收用户提交的版本号作为当前版本的版本号。
步骤202,构建对应当前版本至少一个待部署的组件,并生成当前版本的版本信息。
为了便于后续对目标软件进行版本回滚时,确定该目标软件在各历史版本的状态属性,提高版本回滚的可靠性,可以针对当前版本构建待部署的组件,并生成版本信息。
可以由相关技术人员确定待部署的组件的功能,编译生成组件代码,基于组件代码构建得到该部署的组件,相应的,可以接收相关技术人员提交的项目标识、组件、组件标识以及组件代码标识,从而得到当前版本的版本信息。
需要说明的是,在实际应用中,组件信息也可以包括更多的信息,在本公开的另一可选实施例中,组件信息还包括代码位置信息和部署环境信息中的至少一个,其中,代码位置信息用于说明构建该组件所需的程序代码在代码数据库(比如gitlab,一个用于仓库管理***的开源项目,使用Git作为代码管理工具搭建的网页服务)中的位置,比如该代码位置信息可以包括程序代码的分支名称,部署环境信息用于说明部署该组件所依赖的软件或和/或硬件环境,比如该部署环境信息可以包括部署该组件所依赖的其它组件的组件信息。
还需要说明的是,在实际应用中,版本信息也可以包括更多与软件版本相关的信息,比如版本信息还可以包括历史版本的版本次序,该版本次序用于说明各历史版本的部署顺序。
步骤203,将当前版本的版本信息存储至版本信息库,并将至少一个待部署的组件存储至所述中间件存储***。
为了便于快速准确地获取当前版本的组件对目标软件进行部署,也为了后续进行版本回滚时快速准确地查找得到待回滚的版本信息以及待回滚的组件,从而提高进行版本回滚的准确性和效率,可以将当前版本的版本信息存储至版本信息库,并将待部署的组件存储至中间件存储***。
例如,一种版本信息库可以如下表1所示。
表1
参照上述表1,项目标识为Project_1的目标软件,在2019年1月1日第一次构建和部署了版本V1的组件A和B,在版本信息库中加入了第1行和第2行。类似的,在2019年1月3日第二次新增构建和部署了版本V2的组件A和C,在版本信息库中加入了第3行和第4行;在2019年1月8日第三次新增构建和部署了版本V3的组件D,因此在版本信息库中加入了第5行。可见项目Project_1第一次部署时,包括V1的组件A和B。在2019年1月3日的构建和部署之后,项目Project_1包括V2的A、V1的B和V2的C。在2019年1月8日的构建和部署之后,项目Project_1包括V2的A、V1的B、V2的C和V3的D。
由上述表1可知,各版本的版本信息中可以只包括该版本所部署的组件的组件信息,比如在V1中,部署了组件A和B,而在V2的版本信息中,部署了A和C,而没有再次部署组件B,因此,V2的版本信息中可以只包括组件A和C的组件信息。
可选地,将至少一个待部署的组件打包,得到组件整合包,基于当前版本的版本信息,将组件整合包存储至中间件存储***。
为了便于对当前版本的组件进行统一管理,可以将当前版本的至少一个组件进行打包,从而对打包后的组件整合包进行存储。
其中,可以基于当前版本的版本信息,按照中间件存储***的存储结构,将该组件整合包存储至中间件存储***。
例如,中间件存储***的存储结构可以包括“项目标识/组件标识/版本号/组件代码标识/组件组件整合包”。
需要说明的是,中间件存储***可以只存储版本信息所包括的组件信息相对应的组件。
步骤204,当接收到针对当前版本的部署指令时,基于部署指令,从中间件存储***获取组件整合包,部署指令中携带当前版本的版本信息,部署该组件整合包括的至少一个待部署的组件。
可选地,可以向用户提供部署管控服务,该部署管控服务包括部署过程控制、收集并展示部署日志和展示部署结果中的至少一项。其中,部署过程控制用于向用户提供针对软件部署的控制操作接口,比如基于用户的相关操作指令进行批量部署或迭代部署;部署日志用于展示与软件部署相关信息,比如进行软件部署的脚本的执行状况;部署结果用于说明进行软件部署的结果,该部署结果可以包括成功或失败。
通过上述步骤201-204,可以实现对任意版本的目标软件进行部署,并在版本信息库存储各历史版本的版本信息、在中间件存储***存储各组件。可以通过下述步骤205-208,基于该版本信息库以及中间件存储***,将目标软件回滚至任意历史版本。
需要说明的是,由于在实际应用中,对新版本的部署以及对旧版本的回滚在时序上没有必然的先后次序,因此,也可以先执行下述步骤205-208来进行版本回滚,再执行上述步骤201-204来部署新版本,或者,可以交替执行上述步骤201-204来部署新版本以及下述步骤205-208来进行版本回滚。
步骤205,接收针对目标软件的回滚指令,其中,该回滚指令携带有待回滚的版本号。
其中,接收针对目标软件的回滚指令的方式,可以参见前述步骤101中的相关描述,此处不再一一赘述。
步骤206,基于待回滚的版本号,从版本信息库获取待回滚的版本信息,其中,该版本信息库存储目标软件的至少一个历史版本的版本信息,该版本信息包括版本号、项目标识、至少一个组件的组件信息和更新日期,该组件信息包括组件代码标识和组件标识。
可选地,可以基于待回滚的版本号,从版本信息库获取包括该待回滚的版本号的第一版本信息,基于第一版本信息所包括的更新日期,从版本信息库中获取第二版本信息,第二版本信息包括的更新日期与第一版本信息包括的更新日期相同,或,在第一版本信息包括的更新日期之前,将第一版本信息和第二版本信息确定为待回滚的版本信息。
由于各历史版本的版本信息中可以不包括目标软件在该历史版本时的全部组件,所以在进行版本回滚时,为了准确地确定该目标软件在待回滚的版本所包括的各组件,从而更准确可靠地对目标软件进行回滚,可以基于待回滚的版本号,获取第一版本信息以及第二版本信息作为待回滚的版本信息。
实现过程中,可以按照待回滚的版本号,对版本信息库包括的版本信息进行遍历,查找得到包括该待回滚的版本号的版本信息,即第一版本信息,然后获取第一版本信息所包括的更新日期,将第一版本信息所包括的更新日期,与版本信息库中其它版本信息包括的更新日期进行比较,从而获取得到更新日期早于第一版本信息所包括的更新日期的第二版本信息,进而得到待回滚的版本信息。
需要说明的是,由于待回滚的版本可能为目标软件第一次部署的版本,所以第二版本信息的数目可能为0,也可能为1个以上,相应的,待回滚的版本信息的数目可以为至少1个。
例如,如请参照上述表1所示的版本信息库,获取到的待回滚的版本号为V2,则基于V2,从该版本信息库中获取得到包括V2的第一版本信息,即表1中第3、4行的信息,更新日期为2019年1月3日,从上述表1中获取更新日期在2019年1月3日之前的第二版本信息,即表1中第1、2行的信息,从而得到两个待回滚的版本信息。
步骤207,基于待回滚的版本信息,从中间件存储***获取至少一个待回滚的组件,该中间件存储***中存储有至少一个历史版本所对应的组件。
可选地,从待回滚的版本信息中获取至少一个组件的组件信息以及待回滚的版本信息所包括的更新日期,当一个以上的该待回滚的版本信息中包括同一组件的组件信息时,基于包括该组件的组件信息且更新日期距离当前时刻最近的待回滚的版本信息,从中间件存储***获取该组件作为待回滚的组件。
由于在历次进行对目标软件进行部署的过程中,处于对组件进行更新升级的目的,可能会针对同一组件进行多次部署,即对于同一组件,可能会存在一个以上的版本,为了确保在进行版本回滚时,所回滚的组件针对待回滚的版本是较新的版本,从而减少组件之间不兼容的可能,提高所回滚的目标软件的可靠性和时效性,可以在一个以上的待回滚的版本信息包括同一组件的组件信息时,基于更新日期最新的待回滚版本信息来获取该组件。
可以获取待回滚的版本信息中包括的至少一个组件的组件标识,对于各组件标识,获取包括该组件标识的至少一个待回滚的版本信息,如果存在一个以上的待回滚的版本信息均包括该组件标识,则将该一个以上的待回滚的版本信息所包括的更新日期进行比较,获取更新日期距离当前时刻最近的待回滚的版本信息,并基于所获取的待回滚的版本信息,从中间件存储***中获取该组件。
例如,如请参照上述表1所示的版本信息库,待回滚的版本号为V2,则获取到2个待回滚的版本信息包括如表1中第3、4行所示的第一版本信息、如表1中第1、2行所示的第二版本信息。由该2个待回滚的版本信息可知,目标软件在V2时,包括组件A、B和C,其中,组件A包括两个版本,且由于第二版本信息包括的更新日期晚于第一版本信息,可以基于第一版本信息获取组件A和C,基于第二版本信息获取组件B。
可选地,若根据待回滚的版本信息,从中间件存储***获取到的为组件整合包,则可以从该组件整合包中获取待回滚的组件。
可选地,若未能从中间件存储***获取到待回滚的组件,比如该中间件存储***故障而无法获取到待回滚的组件,可以基于该待回滚的组件的组件代码标识,从代码数据库获取该待回滚的组件对应的组件代码,基于获取的组件代码构建得到该待回滚的组件,从而进一步提高获取到待回滚的组件的可靠性。
当然,在基于组件代码标识获取到该待回滚的组件的组件代码之后,还可以基于组件代码位置信息,对该组件代码所在的位置进行确认,并在该组件代码所在的位置与组件代码位置信息一致时,基于该组件代码构建得到待回滚的组件。
可选地,若待回滚的版本信息中还包括待回滚的组件所依赖的其它组件的组件信息,可以基于该其它组件的组件信息,获取该待回滚的组件所依赖的组件。
步骤208,根据至少一个待回滚的组件对目标软件执行回滚。
其中,根据至少一个待回滚的组件对目标软件执行回滚的方式,可以参见前述步骤103中的相关描述,此处不再一一赘述。
可选地,当获取到待回滚的组件所依赖的组件时,还可以对于该待回滚的组件所依赖的组件进行回滚。
在本公开实施例中,首先,目标软件可能包括至少一个的组件以及至少一个的历史版本,且各个历史版本所需的组件可能不同,即目标版本在不同的历史版本可能有不同的状态属性,而版本信息库包括至少一个历史版本的版本信息,且版本信息包括版本号、项目标识、至少一个组件的组件信息和更新日期,中间件存储***存储有至少一个历史版本对应的组件,那么在接收针对目标软件的回滚指令时,基于该回滚指令所携带的待回滚的版本号,可以从版本信息库获取待回滚的版本信息,该待回滚的版本信息即能够准确地指示说明待回滚的各组件,基于该待回滚的版本信息即能够从中间件存储***准确地获取得到待回滚的组件,从而可以基于待回滚的组件,准确可靠地对目标软件进行回滚。
另外,在本公开实施例中,能够从待回滚的版本信息中获取至少一个组件的组件信息以及待回滚的版本信息所包括的更新日期,从而在一个以上的该待回滚的版本信息中包括同一组件的组件信息时,基于更新日期最新的待回滚的版本信息,从中间件存储***获取该组件作为待回滚的组件,从而确保了所回滚的组件针对待回滚的版本是较新的版本,减少了组件之间不兼容的可能,提高了所回滚的目标软件的可靠性和时效性。
并且,在对目标软件进行部署时,能够获取目标软件当前版本的版本号,构建对应当前版本至少一个待部署的组件,并生成当前版本的版本信息,将当前版本的版本信息存储至版本信息库,并将至少一个待部署的组件存储至所述中间件存储***,确保了后续对目标软件进行版本回滚时,确定该目标软件在各历史版本的状态属性并能够准确地获取到该目标软件在该历史版本所包括的各组件,进一步提高了版本回滚的可靠性。
请参照图3,为本公开所提供的一种软件版本回滚装置300的功能模块示意图。需要说明的是,本实施例所提供的软件版本回滚装置300,其基本原理及产生的技术效果与前述对应的方法实施例相同,为简要描述,本实施例中未提及部分,可参考方法实施例中的相应内容。该软件版本回滚装置300包括接收模块301,第一获取模块302,第二获取模块303和回滚模块304。
接收模块301,用于接收针对目标软件的回滚指令,其中,所述回滚指令携带有待回滚的版本号;
第一获取模块302,用于基于所述待回滚的版本号,从版本信息库获取待回滚的版本信息,其中,所述版本信息库存储所述目标软件的至少一个历史版本的版本信息,所述版本信息包括版本号、项目标识、至少一个组件的组件信息和更新日期,所述组件信息包括组件代码标识和组件标识;
第二获取模块303,用于基于所述待回滚的版本信息,从中间件存储***获取至少一个待回滚的组件,所述中间件存储***中存储有至少一个所述历史版本所对应的组件;
回滚模块304用于根据至少一个所述待回滚的组件对所述目标软件执行回滚。
可选地,所述第一获取模块302具体用于:
基于所述待回滚的版本号,从所述版本信息库获取包括所述待回滚的版本号的第一版本信息;
基于所述第一版本信息所包括的更新日期,从所述版本信息库中获取第二版本信息,所述第二版本信息包括的更新日期与所述第一版本信息包括的更新日期相同,或,在所述第一版本信息包括的更新日期之前;
将所述第一版本信息和所述第二版本信息确定为所述待回滚的版本信息。
可选地,所述第二获取模块303具体用于:
从所述待回滚的版本信息中获取至少一个所述组件的组件信息以及所述待回滚的版本信息所包括的更新日期;
当一个以上的所述待回滚的版本信息中包括同一所述组件的组件信息时,基于包括所述组件的组件信息且更新日期距离当前时刻最近的所述待回滚的版本信息,从所述中间件存储***获取所述组件作为所述待回滚的组件。
可选地,请参照图4,所述装置还包括:
第三获取模块305,用于获取所述目标软件当前版本的版本号;
构建模块306,用于构建对应所述当前版本至少一个待部署的组件,并生成所述当前版本的版本信息;
存储模块307,用于将所述当前版本的版本信息存储至所述版本信息库,并将至少一个所述待部署的组件存储至所述中间件存储***。
可选地,所述存储模块307具体用于:
将至少一个所述待部署的组件打包,得到组件整合包;
基于所述当前版本的版本信息,将所述组件整合包存储至所述中间件存储***。
可选地,请参照图5,所述装置还包括:
第四获取模块308,用于当接收到针对所述当前版本的部署指令时,基于所述部署指令,从所述中间件存储***获取所述组件整合包,所述部署指令中携带所述当前版本的版本信息;
部署模块309,用于部署所述组件整合包括的至少一个所述待部署的组件。
上述装置用于执行前述实施例提供的方法,其实现原理和技术效果类似,在此不再赘述。
以上这些模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(Application Specific Integrated Circuit,简称ASIC),或,一个或多个微处理器(digital singnal processor,简称DSP),或,一个或者多个现场可编程门阵列(Field Programmable Gate Array,简称FPGA)等。再如,当以上某个模块通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(CentralProcessing Unit,简称CPU)或其它可以调用程序代码的处理器。再如,这些模块可以集成在一起,以片上***(system-on-a-chip,简称SOC)的形式实现。
请参照图6,为本公开所提供的一种服务器的功能模块示意图。该服务器可以包括处理器601、存储介质602和总线603,该存储介质602存储有该处理器601可执行的机器可读指令,当该服务器运行时,该处理器601与该存储介质602之间通过总线603通信,该处理器601执行该机器可读指令,可以实现上述方法实施例。具体实现方式和技术效果类似,这里不再赘述。
可选地,本公开还提供一计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行,以实现上述方法实施例。
在本公开所提供的几个实施例中,应该理解到,以上所描述的装置实施例仅仅是示意性的,所揭露的装置和方法,可以通过其它的方式实现。例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行,例如各单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅为本公开的优选实施例而已,并不用于限制本公开,对于本领域的技术人员来说,本公开可以有各种更改和变化。凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。
Claims (8)
1.一种软件版本回滚方法,其特征在于,包括:
接收针对目标软件的回滚指令,其中,所述回滚指令携带有待回滚的版本号;
基于所述待回滚的版本号,从版本信息库获取待回滚的版本信息,其中,所述版本信息库存储所述目标软件的至少一个历史版本的版本信息,所述版本信息包括版本号、项目标识、至少一个组件的组件信息和更新日期,所述组件信息包括组件代码标识和组件标识;
基于所述待回滚的版本信息,从中间件存储***获取至少一个待回滚的组件,所述中间件存储***中存储有至少一个所述历史版本所对应的组件;
根据至少一个所述待回滚的组件对所述目标软件执行回滚;
所述基于所述待回滚的版本号,从版本信息库获取待回滚的版本信息,包括:
基于所述待回滚的版本号,从所述版本信息库获取包括所述待回滚的版本号的第一版本信息;
基于所述第一版本信息所包括的更新日期,从所述版本信息库中获取第二版本信息,所述第二版本信息包括的更新日期与所述第一版本信息包括的更新日期相同,或,在所述第一版本信息包括的更新日期之前;
将所述第一版本信息和所述第二版本信息确定为所述待回滚的版本信息。
2.如权利要求1所述的方法,其特征在于,所述基于所述待回滚的版本信息,从中间件存储***获取至少一个待回滚的组件,包括:
从所述待回滚的版本信息中获取至少一个所述组件的组件信息以及所述待回滚的版本信息所包括的更新日期;
当一个以上的所述待回滚的版本信息中包括同一所述组件的组件信息时,基于包括所述组件的组件信息且更新日期距离当前时刻最近的所述待回滚的版本信息,从所述中间件存储***获取所述组件作为所述待回滚的组件。
3.如权利要求1或2所述的方法,其特征在于,所述方法还包括:
获取所述目标软件当前版本的版本号;
构建对应所述当前版本至少一个待部署的组件,并生成所述当前版本的版本信息;
将所述当前版本的版本信息存储至所述版本信息库,并将至少一个所述待部署的组件存储至所述中间件存储***。
4.如权利要求3所述的方法,其特征在于,所述将至少一个所述待部署的组件存储至所述中间件存储***,包括:
将至少一个所述待部署的组件打包,得到组件整合包;
基于所述当前版本的版本信息,将所述组件整合包存储至所述中间件存储***。
5.如权利要求4所述的方法,其特征在于,所述方法还包括:
当接收到针对所述当前版本的部署指令时,基于所述部署指令,从所述中间件存储***获取所述组件整合包,所述部署指令中携带所述当前版本的版本信息;
部署所述组件整合包括的至少一个所述待部署的组件。
6.一种软件版本回滚装置,其特征在于,包括:
接收模块,用于接收针对目标软件的回滚指令,其中,所述回滚指令携带有待回滚的版本号;
第一获取模块,用于基于所述待回滚的版本号,从版本信息库获取待回滚的版本信息,其中,所述版本信息库存储所述目标软件的至少一个历史版本的版本信息,所述版本信息包括版本号、项目标识、至少一个组件的组件信息和更新日期,所述组件信息包括组件代码标识和组件标识;
第二获取模块,用于基于所述待回滚的版本信息,从中间件存储***获取至少一个待回滚的组件,所述中间件存储***中存储有至少一个所述历史版本所对应的组件;
回滚模块,用于根据至少一个所述待回滚的组件对所述目标软件执行回滚;
所述第一获取模块具体用于:
基于所述待回滚的版本号,从所述版本信息库获取包括所述待回滚的版本号的第一版本信息;
基于所述第一版本信息所包括的更新日期,从所述版本信息库中获取第二版本信息,所述第二版本信息包括的更新日期与所述第一版本信息包括的更新日期相同,或,在所述第一版本信息包括的更新日期之前;
将所述第一版本信息和所述第二版本信息确定为所述待回滚的版本信息。
7.一种服务器,其特征在于,包括:处理器、存储介质和总线,所述存储介质存储有所述处理器可执行的机器可读指令,当所述服务器运行时,所述处理器与所述存储介质之间通过所述总线通信,所述处理器执行所述机器可读指令,以执行如权利要求1-5任一方法的步骤。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如权利要求1-5任一方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910619035.6A CN110321254B (zh) | 2019-07-09 | 2019-07-09 | 软件版本回滚方法、装置、服务器及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910619035.6A CN110321254B (zh) | 2019-07-09 | 2019-07-09 | 软件版本回滚方法、装置、服务器及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110321254A CN110321254A (zh) | 2019-10-11 |
CN110321254B true CN110321254B (zh) | 2021-09-17 |
Family
ID=68121672
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910619035.6A Active CN110321254B (zh) | 2019-07-09 | 2019-07-09 | 软件版本回滚方法、装置、服务器及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110321254B (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111159160B (zh) * | 2019-12-31 | 2023-06-20 | 卓米私人有限公司 | 一种版本回滚方法、装置、电子设备及存储介质 |
CN111400243B (zh) * | 2020-02-25 | 2024-04-05 | 数字广东网络建设有限公司 | 基于流水线服务的研发管理***以及文件存储方法、装置 |
WO2021168840A1 (zh) * | 2020-02-28 | 2021-09-02 | 华为技术有限公司 | 一种软件版本回滚方法、装置及*** |
CN111522615B (zh) * | 2020-04-23 | 2023-08-15 | 深圳赛安特技术服务有限公司 | 命令行界面的更新方法、装置、设备及存储介质 |
CN111625262B (zh) * | 2020-05-28 | 2023-08-22 | 广东浪潮大数据研究有限公司 | 一种工作负载资源的回滚方法、***、设备及存储介质 |
CN112148382A (zh) * | 2020-09-18 | 2020-12-29 | 湖南联盛网络科技股份有限公司 | 手机应用策略配置***、配置方法、更新方法及装置 |
CN112114905B (zh) * | 2020-09-29 | 2023-09-26 | 中国银行股份有限公司 | 软件版本切换方法及装置 |
CN112231302A (zh) * | 2020-10-30 | 2021-01-15 | 深圳开源互联网安全技术有限公司 | Java开源组件数据库的维护方法、装置及存储介质 |
CN112306551B (zh) * | 2020-10-30 | 2023-09-29 | 数字广东网络建设有限公司 | 历史配置信息获取方法、***和装置 |
CN112306995B (zh) * | 2020-11-11 | 2023-06-27 | 北京奥星贝斯科技有限公司 | 一种数据库操作的实现方法及装置 |
CN112540805B (zh) * | 2020-12-24 | 2023-11-14 | 北京百度网讯科技有限公司 | 集成项目打包方法、装置、设备、存储介质以及程序产品 |
CN112799877A (zh) * | 2020-12-30 | 2021-05-14 | 广州朗国电子科技有限公司 | 基于ota的版本回滚方法、***及存储介质 |
CN112947992B (zh) * | 2021-03-31 | 2023-10-27 | 建信金融科技有限责任公司 | 代码版本管理的方法和装置 |
CN113360213A (zh) * | 2021-06-30 | 2021-09-07 | 中国农业银行股份有限公司 | 应用程序版本切换方法、装置、设备及*** |
CN115460078A (zh) * | 2022-09-09 | 2022-12-09 | 南京信易达计算技术有限公司 | 全栈式高性能计算应用管理***及方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1407363A4 (en) * | 2001-06-06 | 2006-10-25 | Commvault Systems Inc | BACK SPECIFIC BACK OF AN APPLICATION IN A COMPUTER SYSTEM |
CN102841824A (zh) * | 2011-06-23 | 2012-12-26 | 珠海市君天电子科技有限公司 | 一种回滚方法和回滚装置 |
CN103714002A (zh) * | 2013-12-26 | 2014-04-09 | 北京奇虎科技有限公司 | 基于配置***的项目测试方法及装置 |
CN106445488A (zh) * | 2016-07-01 | 2017-02-22 | 厦门易名科技股份有限公司 | 一种代码发布及回退的方法 |
CN107908421A (zh) * | 2017-09-29 | 2018-04-13 | 北京创鑫旅程网络技术有限公司 | 软件代码版本管理与发布的方法及装置 |
CN108664267A (zh) * | 2018-04-09 | 2018-10-16 | 上海瀚银信息技术有限公司 | 一种代码自动打包*** |
CN109144548A (zh) * | 2018-08-27 | 2019-01-04 | 杭州安恒信息技术股份有限公司 | 一种基于git实现的多组件软件升级方法、装置及服务器 |
-
2019
- 2019-07-09 CN CN201910619035.6A patent/CN110321254B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1407363A4 (en) * | 2001-06-06 | 2006-10-25 | Commvault Systems Inc | BACK SPECIFIC BACK OF AN APPLICATION IN A COMPUTER SYSTEM |
CN102841824A (zh) * | 2011-06-23 | 2012-12-26 | 珠海市君天电子科技有限公司 | 一种回滚方法和回滚装置 |
CN103714002A (zh) * | 2013-12-26 | 2014-04-09 | 北京奇虎科技有限公司 | 基于配置***的项目测试方法及装置 |
CN106445488A (zh) * | 2016-07-01 | 2017-02-22 | 厦门易名科技股份有限公司 | 一种代码发布及回退的方法 |
CN107908421A (zh) * | 2017-09-29 | 2018-04-13 | 北京创鑫旅程网络技术有限公司 | 软件代码版本管理与发布的方法及装置 |
CN108664267A (zh) * | 2018-04-09 | 2018-10-16 | 上海瀚银信息技术有限公司 | 一种代码自动打包*** |
CN109144548A (zh) * | 2018-08-27 | 2019-01-04 | 杭州安恒信息技术股份有限公司 | 一种基于git实现的多组件软件升级方法、装置及服务器 |
Also Published As
Publication number | Publication date |
---|---|
CN110321254A (zh) | 2019-10-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110321254B (zh) | 软件版本回滚方法、装置、服务器及存储介质 | |
CN107908421B (zh) | 软件代码版本管理与发布的方法及装置 | |
US9311064B1 (en) | Systems and methods for automated centralized build/merge management | |
US8010962B2 (en) | Infrastructure for the automation of the assembly of schema maintenance scripts | |
CN106951369B (zh) | 一种联调测试的管理方法及装置 | |
CN108776643B (zh) | 一种基于版本控制流程的目标代码合并控制方法及*** | |
US20070245332A1 (en) | Method and apparatus to perform an application software migration | |
CN104423960A (zh) | 一种项目持续集成的方法及*** | |
CN111078481B (zh) | 获取配置检查清单的方法、装置、电子设备及存储介质 | |
CN113448862B (zh) | 软件版本测试方法、装置及计算机设备 | |
US20210048999A1 (en) | Automated generation of status chains for software updates | |
CN111158730A (zh) | ***更新方法、装置、电子设备和可读存储介质 | |
CN112416957A (zh) | 基于数据模型层的数据增量更新方法、装置及计算机设备 | |
CN115048131A (zh) | 基于文件hash的桌面应用程序增量更新方法和*** | |
CN116501652B (zh) | 基于saas***的可持续集成的自动化测试方法及*** | |
CN112817931B (zh) | 一种增量版本文件的生成方法及装置 | |
CN111400243B (zh) | 基于流水线服务的研发管理***以及文件存储方法、装置 | |
US11281444B2 (en) | Application update monitoring computer systems | |
CN112256365B (zh) | 一种自动化管理多语言版本的方法及终端 | |
CN114579171A (zh) | 代码处理方法、装置、计算机设备和存储介质 | |
CN114089962A (zh) | 一种构件管理方法、设备及介质 | |
CN115705297A (zh) | 代码调用检测方法、装置、计算机设备以及存储介质 | |
CN117348916B (zh) | 脚本生成方法、装置、设备及存储介质 | |
CN112363745A (zh) | 规则文件的管理方法、装置、计算机设备及存储介质 | |
CN112860313A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |