CN110389773A - 软件发布及部署方法、装置及*** - Google Patents

软件发布及部署方法、装置及*** Download PDF

Info

Publication number
CN110389773A
CN110389773A CN201810366893.XA CN201810366893A CN110389773A CN 110389773 A CN110389773 A CN 110389773A CN 201810366893 A CN201810366893 A CN 201810366893A CN 110389773 A CN110389773 A CN 110389773A
Authority
CN
China
Prior art keywords
version number
software
code
version
server
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
CN201810366893.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.)
BYD Co Ltd
Original Assignee
BYD 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 BYD Co Ltd filed Critical BYD Co Ltd
Priority to CN201810366893.XA priority Critical patent/CN110389773A/zh
Publication of CN110389773A publication Critical patent/CN110389773A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种软件发布及部署方法、装置及***,其中,方法包括:在接收到软件更新请求时,根据软件更新请求中携带的目标服务器上软件的当前版本号,查询版本库,获取软件的新版本号相对于当前版本号的代码变动部分;将代码变动部分以及新版本号发送给目标服务器,以使目标服务器对软件进行更新,避免将更新后的软件的全部代码发送给目标服务器,从而降低了软件更新时的数据传输量,提高了数据传输效率和软件更新效率,提高了软件的版本切换速度。

Description

软件发布及部署方法、装置及***
技术领域
本发明涉及互联网技术领域,特别涉及一种软件发布及部署方法、装置及***。
背景技术
目前,在进行软件发布及部署时,需要由git服务器将软件的源代码发送给编译服务器,编译服务器对源代码进行编译,得到可执行代码,并对可执行代码进行压缩和打包,得到压缩包,将压缩包发送给目标服务器;目标服务器接收到压缩包后,由网站的容器Tomcat进行解压、安装部署以及运行;当软件更新时,编译服务器也需要对更新后的软件进行编译、压缩、打包和发送。
目前的软件中,除了编写的代码外,还包括大量资源文件和中间件。其中,资源文件和中间件占整个软件的90%,且在软件生命周期中很少发生频繁变更。而上述的软件发布及部署方法中,对软件的每次更新都需要将资源文件、中间文件等没有变动的数据重复传输,数据传输量大,降低了数据传输效率,降低了软件更新效率。另外,在软件回退过程中,也需要编译服务器对回退版本的源代码进行编译、压缩、打包以及发送,导致软件版本切换时间长,难以及时快速的切换软件版本。
发明内容
本发明旨在至少在一定程度上解决上述技术中的技术问题之一。
为此,本发明的一个目的在于提出一种软件发布及部署方法,用于解决现有技术中软件更新效率差,软件版本切换时间长的问题。
本发明的第二个目的在于提出一种软件发布及部署装置。
本发明的第三个目的在于提出一种软件发布及部署***。
本发明的第四个目的在于提出另一种软件发布及部署装置。
本发明的第五个目的在于提出一种非临时性计算机可读存储介质。
本发明的第六个目的在于提出一种计算机程序产品。
为达到上述目的,本发明第一方面实施例提出了一种软件发布及部署方法,包括:
判断是否接收到目标服务器的软件更新请求;所述软件更新请求中携带:所述目标服务器上软件的当前版本号;
在接收到所述软件更新请求时,查询版本库,获取所述软件的新版本号相对于所述当前版本号的代码变动部分;
将所述代码变动部分以及所述新版本号发送给所述目标服务器,以使所述目标服务器对所述软件进行更新。
进一步的,所述的方法还包括:
获取编译服务器发送的新版本号的所述软件的可执行代码;
在所述新版本号为非初始版本号时,查询所述版本库,获取上一个版本号的所述软件的可执行代码;所述版本库中保存有:各个版本号以及对应的代码;其中,初始版本号对应的代码为可执行代码;非初始版本号对应的代码为非初始版本号相对于上一个版本号的代码变动部分;
将新版本号的所述软件的可执行代码与上一个版本号的所述软件的可执行代码进行比对,确定所述新版本号相对于上一个版本号的代码变动部分;
将所述新版本号以及相对于上一个版本号的代码变动部分保存到版本库中。
进一步的,所述目标服务器发送所述软件更新请求的触发条件为,接收到编译服务器的第一指示信息;所述第一指示信息为所述编译服务器发送新版本号的软件的可执行代码后发送的。
进一步的,所述的方法还包括:
判断是否接收到所述目标服务器的软件版本回退请求;所述软件版本回退请求中携带:所述目标服务器上软件的当前版本号以及回退版本号;
在接收到所述软件版本回退请求时,查询所述版本库,获取所述回退版本号相对于所述当前版本号的代码变动部分;
将所述代码变动部分发送给所述目标服务器,以使所述目标服务器将当前版本号的所述软件回退至所述回退版本号的软件。
进一步的,所述查询所述版本库,获取所述回退版本号相对于所述当前版本号的代码变动部分,包括:
在所述回退版本号为所述当前版本号的上一个版本号时,根据所述版本库中所述当前版本号对应的代码,确定所述回退版本号相对于所述当前版本号的代码变动部分;
在所述回退版本号不是所述当前版本号的上一个版本号时,确定所述回退版本号与所述当前版本号之间的中间版本号,根据所述版本库中当前版本号对应的代码以及所述中间版本号对应的代码,确定所述回退版本号相对于所述当前版本号的代码变动部分。
进一步的,所述目标服务器发送软件版本回退请求的触发条件为,接收到编译服务器的第二指示信息;所述第二指示信息中携带:回退版本号。
本发明实施例的软件发布及部署方法中,在接收到软件更新请求时,根据软件更新请求中携带的目标服务器上软件的当前版本号,查询版本库,获取软件的新版本号相对于当前版本号的代码变动部分;将代码变动部分以及新版本号发送给目标服务器,以使目标服务器对软件进行更新,避免将更新后的软件的全部代码发送给目标服务器,从而降低了软件更新时的数据传输量,提高了数据传输效率和软件更新效率,提高了软件的版本切换速度。
为达到上述目的,本发明第二方面实施例提出了一种软件发布及部署装置,包括:
判断模块,用于判断是否接收到目标服务器的软件更新请求;所述软件更新请求中携带:所述目标服务器上软件的当前版本号;
查询模块,用于在接收到所述软件更新请求时,查询版本库,获取所述软件的新版本号相对于所述当前版本号的代码变动部分;
发送模块,用于将所述代码变动部分以及所述新版本号发送给所述目标服务器,以使所述目标服务器对所述软件进行更新。
进一步的,所述的装置还包括:获取模块、比对模块和保存模块;
所述获取模块,用于获取编译服务器发送的新版本号的所述软件的可执行代码;
所述查询模块,还用于在所述新版本号为非初始版本号时,查询所述版本库,获取上一个版本号的所述软件的可执行代码;所述版本库中保存有:各个版本号以及对应的代码;其中,初始版本号对应的代码为可执行代码;非初始版本号对应的代码为非初始版本号相对于上一个版本号的代码变动部分;
所述比对模块,用于将新版本号的所述软件的可执行代码与上一个版本号的所述软件的可执行代码进行比对,确定所述新版本号相对于上一个版本号的代码变动部分;
所述保存模块,用于将所述新版本号以及相对于上一个版本号的代码变动部分保存到版本库中。
进一步的,所述目标服务器发送所述软件更新请求的触发条件为,接收到编译服务器的第一指示信息;所述第一指示信息为所述编译服务器发送新版本号的软件的可执行代码后发送的。
进一步的,所述判断模块,还用于判断是否接收到所述目标服务器的软件版本回退请求;所述软件版本回退请求中携带:所述目标服务器上软件的当前版本号以及回退版本号;
所述查询模块,还用于在接收到所述软件版本回退请求时,查询所述版本库,获取所述回退版本号相对于所述当前版本号的代码变动部分;
所述发送模块,还用于将所述代码变动部分发送给所述目标服务器,以使所述目标服务器将当前版本号的所述软件回退至所述回退版本号的软件。
进一步的,所述查询模块具体用于,
在所述回退版本号为所述当前版本号的上一个版本号时,根据所述版本库中所述当前版本号对应的代码,确定所述回退版本号相对于所述当前版本号的代码变动部分;
在所述回退版本号不是所述当前版本号的上一个版本号时,确定所述回退版本号与所述当前版本号之间的中间版本号,根据所述版本库中当前版本号对应的代码以及所述中间版本号对应的代码,确定所述回退版本号相对于所述当前版本号的代码变动部分。
进一步的,所述目标服务器发送软件版本回退请求的触发条件为,接收到编译服务器的第二指示信息;所述第二指示信息中携带:回退版本号。
本发明实施例的软件发布及部署装置中,在接收到软件更新请求时,根据软件更新请求中携带的目标服务器上软件的当前版本号,查询版本库,获取软件的新版本号相对于当前版本号的代码变动部分;将代码变动部分以及新版本号发送给目标服务器,以使目标服务器对软件进行更新,避免将更新后的软件的全部代码发送给目标服务器,从而降低了软件更新时的数据传输量,提高了数据传输效率和软件更新效率,提高了软件的版本切换速度。
本发明的第三个目的在于提出一种软件发布及部署***,包括:编译服务器、git服务器和目标服务器;
所述编译服务器,用于获取新版本号的软件的源代码,对所述源代码进行编译,得到可执行代码,将所述可执行代码提交给git服务器;
所述目标服务器,用于安装运行所述软件;
所述git服务器,分别与所述编译服务器和所述目标服务器连接,用于执行如上所述的软件发布及部署方法。
本发明的第四个目的在于提出另一种软件发布及部署装置,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上所述的软件发布及部署方法。
本发明的第五个目的在于提出一种非临时性计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上所述的软件发布及部署方法。
本发明的第六个目的在于提出一种计算机程序产品,当所述计算机程序产品中的指令处理器执行时,实现如上所述的软件发布及部署方法。
本发明附加的方面的优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
图1是本发明实施例提供的一种软件发布及部署方法的流程示意图;
图2是本发明实施例提供的另一种软件发布及部署方法的流程示意图;
图3是本发明实施例提供的另一种软件发布及部署方法的流程示意图;
图4是本发明实施例提供的一种软件发布及部署装置的结构示意图;
图5是本发明实施例提供的另一种软件发布及部署装置的结构示意图;
图6是本发明实施例提供的一种软件发布及部署***的结构示意图;
图7是本发明实施例提供的另一种软件发布及部署装置的结构示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
下面结合附图来描述本发明实施例的软件发布及部署方法、装置及***。
图1是根据本发明一个实施例的软件发布及部署方法的流程示意图。如图1所示,本发明实施例的软件发布及部署方法包括:
S101、判断是否接收到目标服务器的软件更新请求;软件更新请求中携带:目标服务器上软件的当前版本号。
本发明提供的软件发布及部署方法的执行主体为软件发布及部署装置,软件发布及部署装置具体可以为git服务器,或者git服务器上执行软件发布及部署方法的软件等。git服务器,用于对发布的软件的可执行代码进行版本控制等。其中,目标服务器为实际运行软件的服务器,根据***的规模,***中目标服务器的数量可以为几台到几百台。其中,***例如可以为自动售检票***等。在***为自动售检票***的情况下,软件具体为与自动售检票相关的软件。
本实施例中,目标服务器发送软件更新请求的触发条件为,接收到编译服务器的第一指示信息;第一指示信息为编译服务器发送新版本号的软件的可执行代码后发送的。其中,开发服务器在软件更新完成后,可以将相应的软件源代码发送给编译服务器,编译服务器对源代码进行编译,得到软件的可执行代码,将软件的可执行代码发送给git服务器后,向目标服务器发送第一指示信息,指示目标服务器在git服务器上有新版本的软件发布。
另外,需要说明的是,若编译服务器发送给git服务器的是初始版本号的软件的可执行代码时,编译服务器向git服务器发送初始版本号的软件的可执行代码后,可以向目标服务器发送第三指示信息,指示目标服务器向git服务器发送软件安装请求,软件安装请求中不携带版本号,以使git服务器将初始版本号的软件的可执行代码发送给目标服务器,目标服务器进行软件的安装以及运行。
另外,还需要进行说明的是,本实施例中,可以在编译服务器和目标服务器上设置相应的git脚本。编译服务器上的git脚本自动运行,在编译服务器编译得到软件的可执行代码后,向目标服务器发送第一指示信息、第三指示信息等。目标服务器上设置的git脚本自动运行,在目标服务器接收到第一指示信息时,向git服务器发送软件更新请求;在目标服务器接收到第三指示信息时,向git服务器发送软件安装请求。
S102、在接收到软件更新请求时,查询版本库,获取软件的新版本号相对于当前版本号的代码变动部分。
其中,版本库中可以包括:各个版本号以及对应的代码;其中,初始版本号对应的代码为可执行代码;非初始版本号对应的代码为非初始版本号相对于上一个版本号的代码变动部分。对应的,软件发布装置执行步骤102的过程具体可以为,在当前版本号为新版本号的上一个版本号时,将版本库中新版本号对应的代码,确定为软件的新版本号相对于当前版本号的代码变动部分;在当前版本号不是新版本号的上一个版本号时,获取当前版本号和新版本号之间的中间版本号,根据版本库中新版本号对应的代码以及中间版本号对应的代码;将版本库中新版本号对应的代码以及中间版本号对应的代码组合起来,作为软件的新版本号相对于当前版本号的代码变动部分。
S103、将代码变动部分以及新版本号发送给目标服务器,以使目标服务器对软件进行更新。
本实施例中,git服务器在将代码变动部分以及新版本号发送给目标服务器前,目标服务器需要在git服务器上进行注册。注册的过程具体可以为,目标服务器将生成的shh公钥和sshkey私钥发送给git服务器,git服务器保存shh公钥和sshkey私钥。对应的,git服务器在将代码变动部分以及新版本号发送给目标服务器的过程具体可以为,获取目标服务器的sshkey私钥,验证sshkey私钥是否正确,若正确,则验证通过,将代码变动部分以及新版本号发送给目标服务器。
另外,需要说明的是,sshkey私钥也可以携带在目标服务器的软件更新请求或者软件安装请求中,使得在目标服务器发送软件更新请求或者软件安装请求后,git服务器先对sshkey私钥进行验证,验证通过后,再执行步骤102和步骤103。
另外,目标服务器在接收到代码变动部分以及新版本号后,可以对安装的软件代码以及版本号进行更新,并调用容易Tomcat运行软件代码,实现软件的运行。
以自动售检票***AFC的软件为例,软件的可执行代码中包含近5000个目标代码,800多个子目录,压缩后生成大小为120M的文件。从北京的研发部门的开发服务器部署到位于深圳总部机房的一台目标服务器,使用传统的ftp文件传输的方式需要耗时约10分钟。如果要部署多台目标服务器,耗时将要1个小时或者更多。采用本发明实施例的软件发布及部署方法,每次软件更新大约不到100个文件,使用的网络传输量,从原来的120M降低到1M左右。耗时在10至20秒钟,传输效率提高几十倍。
本发明实施例的软件发布及部署方法,在接收到软件更新请求时,根据软件更新请求中携带的目标服务器上软件的当前版本号,查询版本库,获取软件的新版本号相对于当前版本号的代码变动部分;将代码变动部分以及新版本号发送给目标服务器,以使目标服务器对软件进行更新,避免将更新后的软件的全部代码发送给目标服务器,从而降低了软件更新时的数据传输量,提高了数据传输效率和软件更新效率,提高了软件的版本切换速度。
进一步的,结合参考图2,在图1所示实施例中的基础上,所述的方法还可以包括以下步骤:
S104、获取编译服务器发送的新版本号的软件的可执行代码。
S105、在新版本号为非初始版本号时,查询版本库,获取上一个版本号的软件的可执行代码;版本库中保存有:各个版本号以及对应的代码;其中,初始版本号对应的代码为可执行代码;非初始版本号对应的代码为非初始版本号相对于上一个版本号的代码变动部分。
本实施例中,在上一个版本号为初始版本号时,git服务器可以将版本库中上一个版本号对应的代码,确定为上一个版本号的软件的可执行代码。在上一个版本号为非初始版本号时,git服务器可以获取上一个版本号对应的代码,上上一个版本号对应的代码,直至获取到初始版本号对应的代码;将上一个版本号至初始版本号中,各个版本号对应的代码进行组合,得到上一个版本号的软件的可执行代码。
S106、将新版本号的软件的可执行代码与上一个版本号的软件的可执行代码进行比对,确定新版本号相对于上一个版本号的代码变动部分。
S107、将新版本号以及相对于上一个版本号的代码变动部分保存到版本库中。
本实施例中,git服务器可以在上述过程执行完毕后,再对接收到的目标服务器的软件更新请求进行处理。
图3是根据本发明另一个实施例的软件发布及部署方法的流程示意图。如图3所示,在图1所示实施例的基础上,所述的方法还可以包括以下步骤:
S108、判断是否接收到目标服务器的软件版本回退请求;软件版本回退请求中携带:目标服务器上软件的当前版本号以及回退版本号。
本实施例中,用户在需要对软件进行调试时,一般需要将目标服务器上的软件回退到某个版本,然后将开发服务器与目标服务器连接,在目标服务器上对某个版本的代码进行运行,确定代码所存在的问题,进而在开发服务器上对源代码进行修改,目标服务器上对修改后的源代码对应的可执行代码再次进行运行,如此循环往复,实现对软件的调试。
而要将目标服务器上的软件回退至回退版本号的软件,用户需要在开发服务器上先将回退版本号的软件的源代码发送到编译服务器上;编译服务器对回退版本号的软件的源代码进行编译,得到回退版本号的软件的可执行代码,将回退版本号的软件的可执行代码发送至git服务器,然后将携带回退版本号的第二指示信息发送给目标服务器。目标服务器在接收到编译服务器发送的第二指示信息时,向git服务器发送软件版本回退请求。
S109、查询版本库,获取回退版本号相对于当前版本号的代码变动部分。
本实施例中,git服务器执行步骤109的过程具体可以为,在回退版本号为当前版本号的上一个版本号时,根据版本库中当前版本号对应的代码,确定回退版本号相对于当前版本号的代码变动部分;在回退版本号不是当前版本号的上一个版本号时,确定回退版本号与当前版本号之间的中间版本号,根据版本库中当前版本号对应的代码以及中间版本号对应的代码,确定回退版本号相对于当前版本号的代码变动部分。
S110、将代码变动部分发送给目标服务器,以使目标服务器将当前版本号的软件回退至回退版本号的软件。
本发明实施例的软件发布及部署方法中,在接收到软件版本回退请求时,查询版本库,获取回退版本号相对于当前版本号的代码变动部分;将代码变动部分发送给目标服务器,以使目标服务器将当前版本号的软件回退至回退版本号的软件;从而减少了软件版本切换过程中的数据传输量,提高了软件切换效率,使得用户能够及时将开发服务器与目标服务器连接,实现对回退版本号的软件的调试,提高了调试效率。
图4是根据本发明一个实施例的软件发布及部署装置的结构示意图。如图4所示,包括:判断模块41、查询模块42和发送模块43。
其中,判断模块41,用于判断是否接收到目标服务器的软件更新请求;所述软件更新请求中携带:所述目标服务器上软件的当前版本号;
查询模块42,用于在接收到所述软件更新请求时,查询版本库,获取所述软件的新版本号相对于所述当前版本号的代码变动部分;
发送模块43,用于将所述代码变动部分以及所述新版本号发送给所述目标服务器,以使所述目标服务器对所述软件进行更新。
本发明提供的软件发布及部署装置具体可以为git服务器,或者git服务器上执行软件发布及部署方法的软件等。git服务器,用于对发布的软件的可执行代码进行版本控制等。其中,目标服务器为实际运行软件的服务器,根据***的规模,***中目标服务器的数量可以为几台到几百台。其中,***例如可以为自动售检票***等。在***为自动售检票***的情况下,软件具体为与自动售检票相关的软件。
本实施例中,目标服务器发送软件更新请求的触发条件为,接收到编译服务器的第一指示信息;第一指示信息为编译服务器发送新版本号的软件的可执行代码后发送的。其中,开发服务器在软件更新完成后,可以将相应的软件源代码发送给编译服务器,编译服务器对源代码进行编译,得到软件的可执行代码,将软件的可执行代码发送给git服务器后,向目标服务器发送第一指示信息,指示目标服务器在git服务器上有新版本的软件发布。
另外,需要说明的是,若编译服务器发送给git服务器的是初始版本号的软件的可执行代码时,编译服务器向git服务器发送初始版本号的软件的可执行代码后,可以向目标服务器发送第三指示信息,指示目标服务器向git服务器发送软件安装请求,软件安装请求中不携带版本号,以使git服务器将初始版本号的软件的可执行代码发送给目标服务器,目标服务器进行软件的安装以及运行。
其中,版本库中可以包括:各个版本号以及对应的代码;其中,初始版本号对应的代码为可执行代码;非初始版本号对应的代码为非初始版本号相对于上一个版本号的代码变动部分。对应的,查询模块42具体可以用于,在当前版本号为新版本号的上一个版本号时,将版本库中新版本号对应的代码,确定为软件的新版本号相对于当前版本号的代码变动部分;在当前版本号不是新版本号的上一个版本号时,获取当前版本号和新版本号之间的中间版本号,根据版本库中新版本号对应的代码以及中间版本号对应的代码;将版本库中新版本号对应的代码以及中间版本号对应的代码组合起来,作为软件的新版本号相对于当前版本号的代码变动部分。
进一步的,结合参考图5,在图4所示实施例的基础上,所述的装置还可以包括:获取模块44、比对模块45和保存模块46。
其中,所述获取模块44,用于获取编译服务器发送的新版本号的所述软件的可执行代码;
所述查询模块42,还用于在所述新版本号为非初始版本号时,查询所述版本库,获取上一个版本号的所述软件的可执行代码;所述版本库中保存有:各个版本号以及对应的代码;其中,初始版本号对应的代码为可执行代码;非初始版本号对应的代码为非初始版本号相对于上一个版本号的代码变动部分;
所述比对模块45,用于将新版本号的所述软件的可执行代码与上一个版本号的所述软件的可执行代码进行比对,确定所述新版本号相对于上一个版本号的代码变动部分;
所述保存模块46,用于将所述新版本号以及相对于上一个版本号的代码变动部分保存到版本库中。
本实施例中,在上一个版本号为初始版本号时,git服务器可以将版本库中上一个版本号对应的代码,确定为上一个版本号的软件的可执行代码。在上一个版本号为非初始版本号时,git服务器可以获取上一个版本号对应的代码,上上一个版本号对应的代码,直至获取到初始版本号对应的代码;将上一个版本号至初始版本号中,各个版本号对应的代码进行组合,得到上一个版本号的软件的可执行代码。
本发明实施例的软件发布及部署装置中,在接收到软件更新请求时,根据软件更新请求中携带的目标服务器上软件的当前版本号,查询版本库,获取软件的新版本号相对于当前版本号的代码变动部分;将代码变动部分以及新版本号发送给目标服务器,以使目标服务器对软件进行更新,避免将更新后的软件的全部代码发送给目标服务器,从而降低了软件更新时的数据传输量,提高了数据传输效率和软件更新效率,提高了软件的版本切换速度。
进一步的,在上述实施例的基础上,所述判断模块41,还用于判断是否接收到所述目标服务器的软件版本回退请求;所述软件版本回退请求中携带:所述目标服务器上软件的当前版本号以及回退版本号;
所述查询模块42,还用于在接收到所述软件版本回退请求时,查询所述版本库,获取所述回退版本号相对于所述当前版本号的代码变动部分;
所述发送模块43,还用于将所述代码变动部分发送给所述目标服务器,以使所述目标服务器将当前版本号的所述软件回退至所述回退版本号的软件。
本实施例中,用户在需要对软件进行调试时,一般需要将目标服务器上的软件回退到某个版本,然后将开发服务器与目标服务器连接,在目标服务器上对某个版本的代码进行运行,确定代码所存在的问题,进而在开发服务器上对源代码进行修改,目标服务器上对修改后的源代码对应的可执行代码再次进行运行,如此循环往复,实现对软件的调试。
而要将目标服务器上的软件回退至回退版本号的软件,用户需要在开发服务器上先将回退版本号的软件的源代码发送到编译服务器上;编译服务器对回退版本号的软件的源代码进行编译,得到回退版本号的软件的可执行代码,将回退版本号的软件的可执行代码发送至git服务器,然后将携带回退版本号的第二指示信息发送给目标服务器。目标服务器在接收到编译服务器发送的第二指示信息时,向git服务器发送软件版本回退请求。
本实施例中,查询模块42具体可以用于,在回退版本号为当前版本号的上一个版本号时,根据版本库中当前版本号对应的代码,确定回退版本号相对于当前版本号的代码变动部分;在回退版本号不是当前版本号的上一个版本号时,确定回退版本号与当前版本号之间的中间版本号,根据版本库中当前版本号对应的代码以及中间版本号对应的代码,确定回退版本号相对于当前版本号的代码变动部分。
本发明实施例的软件发布及部署装置中,在接收到软件版本回退请求时,查询版本库,获取回退版本号相对于当前版本号的代码变动部分;将代码变动部分发送给目标服务器,以使目标服务器将当前版本号的软件回退至回退版本号的软件;从而减少了软件版本切换过程中的数据传输量,提高了软件切换效率,使得用户能够及时将开发服务器与目标服务器连接,实现对回退版本号的软件的调试,提高了调试效率。
图6是本发明实施例提供的一种软件发布及部署***的结构示意图,如图6所示,包括:编译服务器61、git服务器62和目标服务器63;
所述编译服务器61,用于获取新版本号的软件的源代码,对所述源代码进行编译,得到可执行代码,将所述可执行代码提交给git服务器62;
所述目标服务器63,用于安装运行所述软件;
所述git服务器62,分别与所述编译服务器61和所述目标服务器63连接,用于执行如图1、图2或者图3所述的软件发布及部署方法。
图7为本发明实施例提供的另一种软件发布及部署装置的结构示意图。该软件发布及部署装置包括:
存储器1001、处理器1002及存储在存储器1001上并可在处理器1002上运行的计算机程序。
处理器1002执行所述程序时实现上述实施例中提供的软件发布及部署方法。
进一步地,软件发布及部署装置还包括:
通信接口1003,用于存储器1001和处理器1002之间的通信。
存储器1001,用于存放可在处理器1002上运行的计算机程序。
存储器1001可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
处理器1002,用于执行所述程序时实现上述实施例所述的软件发布及部署方法。
如果存储器1001、处理器1002和通信接口1003独立实现,则通信接口1003、存储器1001和处理器1002可以通过总线相互连接并完成相互间的通信。所述总线可以是工业标准体系结构(Industry Standard Architecture,简称为ISA)总线、外部设备互连(Peripheral Component,简称为PCI)总线或扩展工业标准体系结构(Extended IndustryStandard Architecture,简称为EISA)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
可选的,在具体实现上,如果存储器1001、处理器1002及通信接口1003,集成在一块芯片上实现,则存储器1001、处理器1002及通信接口1003可以通过内部接口完成相互间的通信。
处理器1002可能是一个中央处理器(Central Processing Unit,简称为CPU),或者是特定集成电路(Application Specific Integrated Circuit,简称为ASIC),或者是被配置成实施本发明实施例的一个或多个集成电路。
本实施例还提供一种非临时性计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如上所述的软件发布及部署方法。
本实施例还提供一种计算机程序产品,当所述计算机程序产品中的指令处理器执行时,实现如上所述的软件发布及部署方法。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行***、装置或设备(如基于计算机的***、包括处理器的***或其他可以从指令执行***、装置或设备取指令并执行指令的***)使用,或结合这些指令执行***、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行***、装置或设备或结合这些指令执行***、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行***执行的软件或固件来实现。如,如果用硬件来实现和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。

Claims (16)

1.一种软件发布及部署方法,其特征在于,包括:
判断是否接收到目标服务器的软件更新请求;所述软件更新请求中携带:所述目标服务器上软件的当前版本号;
在接收到所述软件更新请求时,查询版本库,获取所述软件的新版本号相对于所述当前版本号的代码变动部分;
将所述代码变动部分以及所述新版本号发送给所述目标服务器,以使所述目标服务器对所述软件进行更新。
2.根据权利要求1所述的方法,其特征在于,还包括:
获取编译服务器发送的新版本号的所述软件的可执行代码;
在所述新版本号为非初始版本号时,查询所述版本库,获取上一个版本号的所述软件的可执行代码;所述版本库中保存有:各个版本号以及对应的代码;其中,初始版本号对应的代码为可执行代码;非初始版本号对应的代码为非初始版本号相对于上一个版本号的代码变动部分;
将新版本号的所述软件的可执行代码与上一个版本号的所述软件的可执行代码进行比对,确定所述新版本号相对于上一个版本号的代码变动部分;
将所述新版本号以及相对于上一个版本号的代码变动部分保存到版本库中。
3.根据权利要求1或2所述的方法,其特征在于,所述目标服务器发送所述软件更新请求的触发条件为,接收到编译服务器的第一指示信息;所述第一指示信息为所述编译服务器发送新版本号的软件的可执行代码后发送的。
4.根据权利要求1或2所述的方法,其特征在于,还包括:
判断是否接收到所述目标服务器的软件版本回退请求;所述软件版本回退请求中携带:所述目标服务器上软件的当前版本号以及回退版本号;
在接收到所述软件版本回退请求时,查询所述版本库,获取所述回退版本号相对于所述当前版本号的代码变动部分;
将所述代码变动部分发送给所述目标服务器,以使所述目标服务器将当前版本号的所述软件回退至所述回退版本号的软件。
5.根据权利要求4所述的方法,其特征在于,所述查询所述版本库,获取所述回退版本号相对于所述当前版本号的代码变动部分,包括:
在所述回退版本号为所述当前版本号的上一个版本号时,根据所述版本库中所述当前版本号对应的代码,确定所述回退版本号相对于所述当前版本号的代码变动部分;
在所述回退版本号不是所述当前版本号的上一个版本号时,确定所述回退版本号与所述当前版本号之间的中间版本号,根据所述版本库中当前版本号对应的代码以及所述中间版本号对应的代码,确定所述回退版本号相对于所述当前版本号的代码变动部分。
6.根据权利要求4所述的方法,其特征在于,所述目标服务器发送软件版本回退请求的触发条件为,接收到编译服务器的第二指示信息;所述第二指示信息中携带:回退版本号。
7.一种软件发布及部署装置,其特征在于,包括:
判断模块,用于判断是否接收到目标服务器的软件更新请求;所述软件更新请求中携带:所述目标服务器上软件的当前版本号;
查询模块,用于在接收到所述软件更新请求时,查询版本库,获取所述软件的新版本号相对于所述当前版本号的代码变动部分;
发送模块,用于将所述代码变动部分以及所述新版本号发送给所述目标服务器,以使所述目标服务器对所述软件进行更新。
8.根据权利要求7所述的装置,其特征在于,还包括:获取模块、比对模块和保存模块;
所述获取模块,用于获取编译服务器发送的新版本号的所述软件的可执行代码;
所述查询模块,还用于在所述新版本号为非初始版本号时,查询所述版本库,获取上一个版本号的所述软件的可执行代码;所述版本库中保存有:各个版本号以及对应的代码;其中,初始版本号对应的代码为可执行代码;非初始版本号对应的代码为非初始版本号相对于上一个版本号的代码变动部分;
所述比对模块,用于将新版本号的所述软件的可执行代码与上一个版本号的所述软件的可执行代码进行比对,确定所述新版本号相对于上一个版本号的代码变动部分;
所述保存模块,用于将所述新版本号以及相对于上一个版本号的代码变动部分保存到版本库中。
9.根据权利要求7或8所述的装置,其特征在于,所述目标服务器发送所述软件更新请求的触发条件为,接收到编译服务器的第一指示信息;所述第一指示信息为所述编译服务器发送新版本号的软件的可执行代码后发送的。
10.根据权利要求7或8所述的装置,其特征在于,
所述判断模块,还用于判断是否接收到所述目标服务器的软件版本回退请求;所述软件版本回退请求中携带:所述目标服务器上软件的当前版本号以及回退版本号;
所述查询模块,还用于在接收到所述软件版本回退请求时,查询所述版本库,获取所述回退版本号相对于所述当前版本号的代码变动部分;
所述发送模块,还用于将所述代码变动部分发送给所述目标服务器,以使所述目标服务器将当前版本号的所述软件回退至所述回退版本号的软件。
11.根据权利要求10所述的装置,其特征在于,所述查询模块具体用于,
在所述回退版本号为所述当前版本号的上一个版本号时,根据所述版本库中所述当前版本号对应的代码,确定所述回退版本号相对于所述当前版本号的代码变动部分;
在所述回退版本号不是所述当前版本号的上一个版本号时,确定所述回退版本号与所述当前版本号之间的中间版本号,根据所述版本库中当前版本号对应的代码以及所述中间版本号对应的代码,确定所述回退版本号相对于所述当前版本号的代码变动部分。
12.根据权利要求10所述的装置,其特征在于,所述目标服务器发送软件版本回退请求的触发条件为,接收到编译服务器的第二指示信息;所述第二指示信息中携带:回退版本号。
13.一种软件发布及部署***,其特征在于,包括:编译服务器、git服务器和目标服务器;
所述编译服务器,用于获取新版本号的软件的源代码,对所述源代码进行编译,得到可执行代码,将所述可执行代码提交给git服务器;
所述目标服务器,用于安装运行所述软件;
所述git服务器,分别与所述编译服务器和所述目标服务器连接,用于执行如权利要求1-6任一项所述的软件发布及部署方法。
14.一种软件发布及部署装置,其特征在于,包括:
存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-6中任一所述的软件发布及部署方法。
15.一种非临时性计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-6中任一所述的软件发布及部署方法。
16.一种计算机程序产品,当所述计算机程序产品中的指令处理器执行时,实现如权利要求1-6中任一所述的软件发布及部署方法。
CN201810366893.XA 2018-04-23 2018-04-23 软件发布及部署方法、装置及*** Pending CN110389773A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810366893.XA CN110389773A (zh) 2018-04-23 2018-04-23 软件发布及部署方法、装置及***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810366893.XA CN110389773A (zh) 2018-04-23 2018-04-23 软件发布及部署方法、装置及***

Publications (1)

Publication Number Publication Date
CN110389773A true CN110389773A (zh) 2019-10-29

Family

ID=68284594

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810366893.XA Pending CN110389773A (zh) 2018-04-23 2018-04-23 软件发布及部署方法、装置及***

Country Status (1)

Country Link
CN (1) CN110389773A (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111104125A (zh) * 2019-11-19 2020-05-05 泰康保险集团股份有限公司 智能集成版本管理方法、装置、介质及电子设备
CN111722945A (zh) * 2020-06-22 2020-09-29 重庆忽米网络科技有限公司 一种基于中间件实现的工业互联网应用***及实现方法
CN111813430A (zh) * 2020-07-08 2020-10-23 杭州安森智能信息技术有限公司 机器人集群智能化更新与部署的方法及***
CN112748950A (zh) * 2021-01-15 2021-05-04 国能日新科技股份有限公司 一种软件代码审查方法及装置
CN113127429A (zh) * 2021-06-16 2021-07-16 北京车智赢科技有限公司 一种压缩处理方法、***及计算设备
CN116048601A (zh) * 2022-05-17 2023-05-02 荣耀终端有限公司 软件版本信息同步方法、***及装置
CN116450203A (zh) * 2023-04-19 2023-07-18 大陆软件***开发中心(重庆)有限公司 应用的版本号管理方法、应用升级方法、及装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103428188A (zh) * 2012-05-25 2013-12-04 北京小米科技有限责任公司 一种文件更新方法、装置及相关设备
CN103544033A (zh) * 2013-09-30 2014-01-29 小米科技有限责任公司 应用程序回退方法、装置及相关设备
CN104035800A (zh) * 2014-06-19 2014-09-10 广州金山网络科技有限公司 一种增量包生成方法、版本升级方法、装置以及***
WO2015180304A1 (zh) * 2014-05-30 2015-12-03 广州市动景计算机科技有限公司 增量升级方法及装置
CN107643895A (zh) * 2017-09-29 2018-01-30 郑州云海信息技术有限公司 一种软件打包方法和装置
CN107908421A (zh) * 2017-09-29 2018-04-13 北京创鑫旅程网络技术有限公司 软件代码版本管理与发布的方法及装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103428188A (zh) * 2012-05-25 2013-12-04 北京小米科技有限责任公司 一种文件更新方法、装置及相关设备
CN103544033A (zh) * 2013-09-30 2014-01-29 小米科技有限责任公司 应用程序回退方法、装置及相关设备
WO2015180304A1 (zh) * 2014-05-30 2015-12-03 广州市动景计算机科技有限公司 增量升级方法及装置
CN104035800A (zh) * 2014-06-19 2014-09-10 广州金山网络科技有限公司 一种增量包生成方法、版本升级方法、装置以及***
CN107643895A (zh) * 2017-09-29 2018-01-30 郑州云海信息技术有限公司 一种软件打包方法和装置
CN107908421A (zh) * 2017-09-29 2018-04-13 北京创鑫旅程网络技术有限公司 软件代码版本管理与发布的方法及装置

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111104125A (zh) * 2019-11-19 2020-05-05 泰康保险集团股份有限公司 智能集成版本管理方法、装置、介质及电子设备
CN111104125B (zh) * 2019-11-19 2023-09-08 泰康保险集团股份有限公司 智能集成版本管理方法、装置、介质及电子设备
CN111722945A (zh) * 2020-06-22 2020-09-29 重庆忽米网络科技有限公司 一种基于中间件实现的工业互联网应用***及实现方法
CN111722945B (zh) * 2020-06-22 2024-05-28 重庆忽米网络科技有限公司 一种基于中间件实现的工业互联网应用***及实现方法
CN111813430A (zh) * 2020-07-08 2020-10-23 杭州安森智能信息技术有限公司 机器人集群智能化更新与部署的方法及***
CN112748950A (zh) * 2021-01-15 2021-05-04 国能日新科技股份有限公司 一种软件代码审查方法及装置
CN113127429A (zh) * 2021-06-16 2021-07-16 北京车智赢科技有限公司 一种压缩处理方法、***及计算设备
CN116048601A (zh) * 2022-05-17 2023-05-02 荣耀终端有限公司 软件版本信息同步方法、***及装置
CN116450203A (zh) * 2023-04-19 2023-07-18 大陆软件***开发中心(重庆)有限公司 应用的版本号管理方法、应用升级方法、及装置

Similar Documents

Publication Publication Date Title
CN110389773A (zh) 软件发布及部署方法、装置及***
CN110297766A (zh) 基于分布式测试节点集群的软件测试方法及软件测试***
CN108287758A (zh) 一种应用资源管理方法、使用方法及装置
CN103077024B (zh) 一种支持SaaS应用流程按需定制与运行的装置及方法
CN108874559A (zh) 电子装置、分布式***业务链路分析方法及存储介质
CN109614262B (zh) 业务校验方法、装置及计算机可读存储介质
CN110033373A (zh) 区块链中背书的装置、方法及存储介质
CN109471845A (zh) 日志管理方法、服务器及计算机可读存储介质
CN109739770A (zh) 小程序的调试方法及装置
CN105281955A (zh) 一种业务和资源编排的***、方法及装置
CN109409096A (zh) 内核漏洞修复方法、装置、服务器及***
CN111522728A (zh) 自动化测试用例的生成方法、电子设备及可读存储介质
CN108681504A (zh) 自动化测试方法、测试服务器及计算机可读存储介质
CN109446208A (zh) 一种数据存储方法、计算机可读存储介质及服务器
CN109615091A (zh) 家用电器的故障数据处理方法、装置、服务器和售后***
CN105095263A (zh) ***的生成方法及其装置
CN109284321A (zh) 数据加载方法、装置、计算设备和计算机可读存储介质
CN104408073A (zh) 数据操作方法和装置
CN103186463B (zh) 确定软件的测试范围的方法和***
CN106992940B (zh) 报文处理方法、装置、***及终端
CN111367792A (zh) 一种测试方法、装置、存储介质及电子设备
CN109672534A (zh) 网络资源的处理方法、装置、存储介质和电子装置
US20160012179A1 (en) Method for managing data relative to motor vehicles with a view to the subsequent graphic generation of electrical diagrams of electrical systems
CN108647139A (zh) ***的测试方法、装置、存储介质及电子装置
RU2532714C2 (ru) Способ получения данных при оценке ресурсов сети и устройство для осуществления способа

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
RJ01 Rejection of invention patent application after publication

Application publication date: 20191029

RJ01 Rejection of invention patent application after publication