一种软件部署方法、软件部署***及电子设备
技术领域
本发明属于信息技术领域,尤其涉及一种软件部署方法、软件部署***、电子设备及计算机可读存储介质。
背景技术
现有的信息技术产业(Information Technology,IT)企业在软件产品的交付过程中,通常会引入一些工具来辅助人工完成特定工作,例如当测试人员需要对软件进行测试时,需要由运维人员预先在软件部署工具和定制脚本的辅助下,以人工的方式对软件进行测试部署;在测试部署完成后,测试人员才能够对软件进行测试。
发明内容
本发明提供了一种软件部署方法、软件部署***、电子设备及计算机可读存储介质,旨在提高对软件进行测试部署的效率。
本发明的第一方面提供了一种软件部署方法,所述软件部署方法包括:
获取与本次所测试的软件相关的构建产物及移交描述文件;
调用预设的第一脚本检测所述构建产物及所述移交描述文件是否满足预设的测试条件;
若所述构建产物及所述移交描述文件均满足预设的测试条件,则调用预设的第二脚本,基于所述构建产物及所述移交描述文件,在目标测试主机中为所述软件进行测试部署。
本发明的第二方面提供了一种软件部署***,所述软件部署***包括:
第一获取模块,用于获取与本次所测试的软件相关的构建产物、测试输入参数及移交描述文件;
第一调用模块,用于调用预设的第一脚本检测所述构建产物及所述移交描述文件是否满足预设的测试条件;
第二调用模块,用于当所述构建产物及所述移交描述文件均满足预设的测试条件时,调用预设的第二脚本,基于所述构建产物及所述移交描述文件,在目标测试主机中为所述软件进行测试部署。
本发明的第三方面提供了一种电子设备,所述电子设备包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如上第一方面所述方法的步骤。
本发明的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如上第一方面所述方法的步骤。
由上可见,通过本发明方案,首先获取与本次所测试的软件相关的构建产物及移交描述文件,然后调用预设的第一脚本检测所述构建产物及所述移交描述文件是否满足预设的测试条件,当所述构建产物及所述移交描述文件均满足预设的测试条件时,调用预设的第二脚本,基于所述构建产物及所述移交描述文件,在目标测试主机中为所述软件进行测试部署。本发明方案通过调用脚本对软件进行测试部署,可实现自动化的测试部署,进而大大提高了测试部署的效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的软件部署方法的实现流程图;
图2是本发明实施例提供的另一软件部署方法的实现流程图;
图3是本发明实施例提供的第三种软件部署方法的实现流程图;
图4是本发明实施例提供的软件部署***的结构框图;
图5是本发明实施例提供的电子设备的示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定***结构、技术之类的具体细节,以便透彻理解本发明实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况中,省略对众所周知的***、装置、电路以及方法的详细说明,以免不必要的细节妨碍本发明的描述。
为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。
实施例一
图1示出了本发明实施例一提供的软件部署方法的实现流程,详述如下:
在步骤S101中,获取与本次所测试的软件相关的构建产物及移交描述文件;
在本发明实施例中,首先获取与本次所测试的软件相关的构建产物及移交描述文件。上述构建产物,具体为软件在执行了build构建操作后所获得的产物,包括软件执行了build构建操作后所获得的可执行程序、配置文件及输出数据。上述移交描述文件为JSON格式的文件,其具体为在运用于Java的传输标准文件,在该文件中内嵌了软件部署方法的规范设计,是上述软件部署方法运行的基础。上述移交描述文件的内容具体包括但不限于以下数据:文件(files)数据,配置(configs)数据及数据库(sqls)数据;具体地,上述文件数据包括:组件类型(component)、操作(action)、源文件(filename)及目标文件(destfilename),其中,操作具体包括增加(add)、更新(update)及删除(delete);上述配置数据包括:组件类型(component)、操作(action)、目标文件(destfilename)、配置项键值(key)及环境值列表,其中,操作具体包括增加(add)、更新(update)及删除(delete);上述数据库数据包括:数据库类型及脚本列表,其中,上述数据库类型包括mysql及oracle。需要注意的是,移交描述文件中的某些数据,例如组件类型、操作及目标文件,既属于文件数据的内容,也属于配置数据的内容。
在步骤S102中,调用预设的第一脚本检测上述构建产物及上述移交描述文件是否满足预设的测试条件;
在本发明实施例中,在步骤S101中获得了构建产物及移交描述文件后,可调用预设的第一脚本解析上述移交描述文件,然后再调用该第一脚本检测上述构建产物及上述移交描述文件是否满足预设的测试条件。该测试条件可由开发人员预先设定,此处不作限定。具体地,上述第一脚本为Shell脚本。
在步骤S103中,若上述构建产物及上述移交描述文件均满足预设的测试条件,则调用预设的第二脚本,基于上述构建产物及上述移交描述文件,在上述目标测试主机中为上述软件进行测试部署。
在本发明实施例中,在步骤S103确定目标测试主机后,调用预设的第二脚本,基于上述构建产物及上述移交描述文件,在上述目标测试主机中为上述软件进行测试部署。具体地,上述第二脚本为Shell脚本。
可选地,上述软件部署方法还包括:
获取与本次所测试的软件相关的测试输入参数;
基于上述测试输入参数,确定目标测试主机;
其中,上述测试输入参数可以通过调用一预设的Shell脚本获得。具体地,上述测试输入参数包括:***编码及环境编码;基于上述测试输入参数,确定目标测试主机,包括:调用指定的Shell脚本,根据获得的***编码及环境编码从预设的部署平台查询并确定目标测试主机,并获得该目标测试主机的主机信息,上述主机信息包括但不限于目标测试主机的网络间互联协议(Internet Protocol,IP)地址。可选地,在确定目标测试主机之后,还可以对上述目标测试主机进行验证,包括验证上述目标测试主机的公钥、私钥及状态等。
可选地,上述步骤S103包括:
调用预设的第二脚本,依次在上述目标测试主机中执行停止服务操作、清理缓存操作、复制上述移交描述文件操作、复制上述构建产物操作、启动服务操作;
上述步骤S103之后,上述软件部署方法还包括:
调用测试平台,基于上述测试平台和上述测试输入参数在上述目标测试主机中对上述构建产物进行测试。
其中,上述测试输入参数除了包括***编码、环境编码之外,还包括本次测试的测试类型。在进行测试部署时,首先需停止目标测试主机的服务,并清理目标测试主机的缓存,随后将步骤S101所获得移交描述文件及构建产物分别复制至目标测试主机中,以构建目标测试主机的测试环境,最后启动目标测试主机的服务,完成测试部署。此过程取到了传统的由开发人员手动停止服务、复制文件、启动服务的操作,节约了编译环节及测试部署环节的等待时间。在测试部署完成后,可调用测试平台,将与本次所测试的软件先关的***编码、环境编码及测试类型作为测试平台的输入,对上述软件进行自动化测试并在测试完成后返回测试结果。其中,上述测试类型包括但不限于冒烟测试、回归测试,此处不作限定。
由上可见,通过本发明实施例,在需要对软件进行测试时,能够调用脚本确定目标测试主机,并在目标测试主机中实现对软件的测试环境的部署,节约了编译及测试部署的等待时间,提高了测试部署的效率。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
实施例二
在实施例一的基础上,图2示出了本发明实施例二提供的另一软件部署方法的实现流程,详述如下:
在步骤S201中,获取并解析上述软件的构建描述文件,得到与上述软件相关的构建产物;
在本发明实施例中,首先周期性检测代码库中的代码集是否发生变更,其中,上述代码库为企业所开发的所有软件的合集,存储在svn或git等管理工具中。各软件在上述代码库中占有互不相同的地址,且各软件有其对应的移交号;当开发人员对代码库中的某一软件的代码进行更改时,其移交号会发生改变。因此,可以以每一软件所对应的移交号作为评判代码库中的代码集是否发生了变更的依据,当检测到代码库中的某一软件的移交号发生改变时,则确定代码库中的代码集发生了变更,获取并解析上述发生了变更的软件的构建描述文件build.properties。具体地,上述构建描述文件中包括:构建工具、构建工具的版本、编译语言的版本、构建编码、构建知会人列表、构建执行文件及构建产物目录。在执行了上述构建描述文件后,选择与上述软件对应的软件环境完成编译、单元测试、代码质量检查及构建打包的工作,以得到与上述软件相关的构建产物。
在步骤S202中,调用预设的第三脚本,将上述构建产物及预设的移交描述文件复制至预设的文件服务器中的指定位置;
在本发明实施例中,可以调用预设的第三脚本,对上述构建产物及预设的移交描述文件进行移交操作。具体地,上述第三脚本为Python脚本。可选地,可以先调用上述第三脚本对上述移交描述文件进行解析,以获得上述移交描述文件所包含的配置数据,并将上述构建产物及上述移交描述文件传送并复制至预设的文件服务器的指定位置,其中,上述指定位置基于上述配置数据及***编码共同决定。通过调用预设的第三脚本,省去了传统的构建完成后需要人工复制构建产物的操作,效率进一步得到了提高。
在步骤S203中,从上述文件服务器中的指定位置获取上述构建产物及上述移交描述文件;
在本发明实施例中,从步骤S202中的文件服务器的指定位置中获取与本次所测试的软件相关的构建产物及移交描述文件。其中,在构建完成后,构建过程中的相关参数被保留了下来,并在测试部署的过程中得到了运用。
在步骤S204中,调用预设的第一脚本检测上述构建产物及上述移交描述文件是否满足预设的测试条件;
在步骤S205中,若上述构建产物及上述移交描述文件均满足预设的测试条件,则调用预设的第二脚本,基于上述构建产物及上述移交描述文件,在目标测试主机中为上述软件进行测试部署。
在本发明实施例中,上述步骤S204及S205分别与上述步骤S102及S103的实现方式相同或相似,具体可参见步骤S102及S103的相关描述,在此不再赘述。
由上可见,通过本发明实施例,可以调用脚本进行构建完成后的移交操作,大大节约了上述软件的构建及移交的效率;并在需要对软件进行测试时,能够调用脚本确定目标测试主机,并在目标测试主机中实现对软件的测试环境的部署,节约了编译及测试部署的等待时间,提高了测试部署的效率。
实施例三
在实施例一的基础上,图3示出了本发明实施例三提供的第三种软件部署方法的实现流程,详述如下:
在步骤S301中,获取与本次所测试的软件相关的构建产物及移交描述文件;
在步骤S302中,调用预设的第一脚本检测上述构建产物及上述移交描述文件是否满足预设的测试条件;
在步骤S303中,若上述构建产物及上述移交描述文件均满足预设的测试条件,则调用预设的第二脚本,基于上述构建产物及上述移交描述文件,在目标测试主机中为上述软件进行测试部署;
在本发明实施例中,上述步骤S301、S302及S303分别与上述步骤S101、S102及S103的实现方式相同或相似,具体可参见步骤S101、S102及S103的相关描述,在此不再赘述。
在步骤S304中,检测上述软件是否处于生产发布状态;
在步骤S305中,若上述软件已处于生产发布状态,则在目标生产主机中为上述软件进行生产部署。
在本发明实施例中,在测试部署完成并对软件进行了测试后,将上述测试部署时的相关参数保留,并调用预设的第四脚本检测上述软件是否处于生产发布状态。若上述软件已处于生产发布状态,则确定目标生产主机并执行生产移交及生产部署,其中,执行生产移交及执行生产部署的具体过程与上述步骤S301至S303相似,但并不采用测试输入参数,而是采用生产输入参数;并且,上述生产部署后所获得的生产环境将被同步至测试环境中,使得测试环境与生产环境相同。
可选地,在上述步骤S305之前,上述软件部署方法还包括:
在当前处于空闲状态的主机中确定目标生产主机。
其中,可以在所有处于空闲状态的主机中以随机指定的方式确定目标生产主机,以确保该目标生产主机可以被调用来进行生产部署。
可选地,在上述步骤S305之后,上述软件部署方法还包括:
调用预设的第四脚本,验证上述生产部署是否成功;
若上述生产部署已成功,则备份上述目标生产主机中的所有脚本。
其中,可以继续调用上述第四脚本,基于软件部署***所预设的生产部署规则验证上述生产部署操作是否成功,例如,通过模拟登陆、模拟请求等方式对上述进行了生产部署的目标生产主机进行验证,以此取代传统的人工验证方式。具体地,上述第四脚本为Shell脚本。当确定生产部署成功时,备份上述目标生产主机中的所有脚本,并同时备份上述目标生产主机与生产部署相关的信息,以此使得如果后续在目标生产主机中出现异常情况时,能够通过回滚已备份的脚本及已备份的生产部署相关信息,使得目标生产主机能够回复正常状态。
由上可见,通过本发明实施例,在需要对软件进行测试时,能够调用脚本确定目标测试主机,并在目标测试主机中自动实现对软件的测试环境的部署,节约了编译及测试部署的等待时间,提高了测试部署的效率;并且在测试部署完成后还能通过脚本自动执行生产部署,进一步提高了发布软件的效率。
实施例四
图4示出了本发明实施例提供的软件部署***的具体结构框图,为了便于说明,仅示出了与本发明实施例相关的部分。该软件部署***4包括:第一获取模块41,第一调用模块42,第二调用模块43。
其中,第一获取模块41,用于获取与本次所测试的软件相关的构建产物、测试输入参数及移交描述文件,其中,上述移交描述文件为JSON格式的文件;
第一调用模块42,用于调用预设的第一脚本检测上述构建产物及上述移交描述文件是否满足预设的测试条件;
第二调用模块,用于当上述构建产物及上述移交描述文件均满足预设的测试条件时,调用预设的第二脚本,基于上述构建产物及上述移交描述文件,在目标测试主机中为上述软件进行测试部署。
可选地,上述软件部署***4还包括:
第二获取模块,用于获取上述软件的构建描述文件;
解析模块,用于解析上述软件的构建描述文件,得到与上述软件相关的构建产物;
第三调用模块,用于调用预设的第三脚本,将上述构建产物及预设的移交描述文件复制至预设的文件服务器中的指定位置;
上述第一获取模块41,具体用于从上述文件服务器中的指定位置获取上述构建产物及上述移交描述文件。
可选地,上述软件部署***4还包括:
第三获取模块,用于获取与本次所测试的软件相关的测试输入参数;
目标测试主机确定模块,用于基于上述测试输入参数确定上述目标测试主机。
可选地,上述第二调用模块43,具体用于调用预设的第二脚本,依次在上述目标测试主机中执行停止服务操作、清理缓存操作、复制上述移交描述文件操作、复制上述构建产物操作、启动服务操作;
上述软件部署***4还包括:
测试调用模块,用于调用测试平台,基于上述测试平台和上述测试输入参数在上述目标测试主机中对上述构建产物进行测试。
可选地,上述软件部署***4还包括:
状态检测模块,用于检测上述软件是否处于生产发布状态;
生产部署模块,用于在目标生产主机中为上述软件进行生产部署,其中,上述生产部署后所获得的生产环境与上述测试部署后所获得的测试环境相同。
可选地,上述软件部署***4还包括:
目标生产主机确定模块,用于在当前处于空闲状态的主机中确定目标生产主机。
可选地,上述软件部署***4还包括:
第四调用模块,用于调用预设的第四脚本,验证上述生产部署是否成功;
备份模块,用于当上述生产部署已成功时,备份上述目标生产主机中的所有脚本。
由上可见,通过本发明实施例,软件部署***可以调用脚本进行构建完成后的移交操作,大大节约了上述软件的构建及移交的效率;并在需要对软件进行测试时,能够调用脚本确定目标测试主机,并在目标测试主机中自动实现对软件的测试环境的部署,节约了编译及测试部署的等待时间,提高了测试部署的效率;并且在测试部署完成后还能通过脚本自动执行生产部署,进一步提高了发布软件的效率。
实施例五
图5是本发明实施例提供的电子设备的示意图。如图5所示,该实施例的电子设备5包括:处理器50、存储器51以及存储在上述存储器51中并可在上述处理器50上运行的计算机程序52,例如软件部署程序。上述处理器50执行上述计算机程序52时实现上述各个方法实施例中的步骤,例如图1所示的步骤S101至S103。或者,上述处理器50执行上述计算机程序52时实现上述各***实施例中各模块的功能,例如图4所示模块41至43的功能。
示例性的,上述计算机程序52可以被分割成一个或多个模块,上述一个或者多个模块被存储在上述存储器51中,并由上述处理器50执行,以完成本发明。上述一个或多个模块可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述上述计算机程序52在上述电子设备5中的执行过程。例如,上述计算机程序52可以被分割成第一获取模块,第一调用模块,第二调用模块。各模块具体功能如下:
第一获取模块,用于获取与本次所测试的软件相关的构建产物、测试输入参数及移交描述文件,其中,上述移交描述文件为JSON格式的文件;
第一调用模块,用于调用预设的第一脚本检测上述构建产物及上述移交描述文件是否满足预设的测试条件;
第二调用模块,用于当上述构建产物及上述移交描述文件均满足预设的测试条件时,调用预设的第二脚本,基于上述构建产物及上述移交描述文件,在上述目标测试主机中为上述软件进行测试部署。
上述电子设备5可以是桌上型计算机、笔记本、掌上电脑、智能手机及智能手表等计算设备。上述电子设备可包括,但不仅限于,处理器50、存储器51。本领域技术人员可以理解,图5仅仅是电子设备5的示例,并不构成对电子设备5的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如上述电子设备5还可以包括输入输出设备、网络接入设备、总线等。
所称处理器50可以是中央处理模块(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
上述存储器51可以是上述电子设备5的内部存储模块,例如电子设备5的硬盘或内存。上述存储器51也可以是上述电子设备5的外部存储设备,例如上述电子设备5上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,上述存储器51还可以既包括上述电子设备5的内部存储模块也包括外部存储设备。上述存储器51用于存储上述计算机程序以及上述电子设备5所需的其他程序和数据。上述存储器51还可以用于暂时地存储已经输出或者将要输出的数据。
由上可见,通过本发明实施例,电子设备可以调用脚本进行构建完成后的移交操作,大大节约了上述软件的构建及移交的效率;并在需要对软件进行测试时,能够调用脚本确定目标测试主机,并在目标测试主机中自动实现对软件的测试环境的部署,节约了编译及测试部署的等待时间,提高了测试部署的效率;并且在测试部署完成后还能通过脚本自动执行生产部署,进一步提高了发布软件的效率。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能模块、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块、模块完成,即将上述***的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中,上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。另外,各功能模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述***中模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的模块及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的实施例中,应该理解到,所揭露的***/电子设备和方法,可以通过其它的方式实现。例如,以上所描述的***/电子设备实施例仅仅是示意性的,例如,上述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,***模块的间接耦合或通讯连接,可以是电性,机械或其它的形式。
上述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
上述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,上述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。。其中,上述计算机程序包括计算机程序代码,上述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。上述计算机可读介质可以包括:能够携带上述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,上述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括是电载波信号和电信信号。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。