程序发布方法及系统与流程

文档序号:12463121阅读:300来源:国知局
程序发布方法及系统与流程

本发明涉及计算机软件领域,尤其涉及一种程序发布方法及系统。



背景技术:

在软件项目的开发过程中,开发人员需要在本地开发并编译打包,然后远程登入服务器,并且将编译打包后的软件包上传至服务器,同时根据不同的现场环境规则,在服务器上修改与现场环境相对应的配置文件,接着根据目的地址而执行分发操作,以完成发布任务。在此过程中,避免不了人为的手动打包,其不仅复杂而且枯燥,对各工程间的依赖关系,也需开发人员逐一梳理,很容易疏漏而造成发布失败。



技术实现要素:

本发明的主要目的在于提出一种程序发布方法及系统,旨在提高程序发布的可靠性。

为实现上述目的,本发明提供的一种程序发布方法,所述程序发布方法包括:

解析待发布程序的配置信息获得所述待发布程序的代码库路径,以及所述待发布程序的主程序和子程序之间的依赖关系;

根据所述代码库路径和所述依赖关系从代码库中获取待发布程序对应的工程代码;

根据所述配置信息中的定制化脚本下载第三方软件包;

将所述工程代码进行编译并打包为工程软件包;

将所述工程软件包和所述第三方软件包发送至目标服务器。

优选地,所述将所述工程软件包和所述第三方软件包发送至目标服务器的步骤包括:

根据所述配置信息中的目标服务器的地址和端口将所述工程软件包和所述第三方软件包发送至所述目标服务器。

优选地,所述程序发布方法还包括:

在所述目标服务器中运行所述配置信息中的动态脚本以控制所述待发布程序的运行。

优选地,所述将所述工程代码进行编译并打包为工程软件包的步骤之后还包括:

将所述工程软件包、所述第三方软件包和所述配置信息中的版本号保存在本地服务器,并建立所述工程软件包和所述第三方软件包与所述配置信息中的版本号的映射关系;

所述程序发布方法还包括:

当获取所述工程代码或编译所述工程代码失败时,从本地服务器获取比所述配置信息中的版本号低的版本号的工程软件包和第三方软件包,并发送至目标服务器。

优选地,所述根据所述代码库路径和所述依赖关系从代码库中获取待发布程序对应的工程代码的步骤之后还包括:

将所述工程代码保存在本地服务器,并建立所述工程代码与所述配置信息中的版本号的映射关系;

所述程序发布方法还包括:

当编译所述工程代码失败时,根据所述配置信息中的版本号从本地服务器中查找所述待发布程序的工程代码。

此外,为实现上述目的,本发明还提出一种程序发布系统,所述程序发布系统包括:

解析模块,用于解析待发布程序的配置信息获得所述待发布程序的代码库路径,以及所述待发布程序的主程序和子程序之间的依赖关系;

代码获取模块,用于根据所述代码库路径和所述依赖关系从代码库中获取待发布程序对应的工程代码;

第三方软件包模块,用于根据所述配置信息中的定制化脚本下载第三方软件包;

编译模块,用于将所述工程代码进行编译并打包为工程软件包;

发送模块,用于将所述工程软件包和所述第三方软件包发送至目标服务器。

优选地,所述发送模块用于,根据所述配置信息中的目标服务器的地址和端口将所述工程软件包和所述第三方软件包发送至所述目标服务器。

优选地,所述程序发布系统还包括:

运行模块,用于在所述目标服务器中运行所述配置信息中的动态脚本以控制所述待发布程序的运行。

优选地,所述程序发布系统还包括:

存储模块,用于将所述工程软件包、所述第三方软件包和所述配置信息中的版本号保存在本地服务器,并建立所述工程软件包和所述第三方软件包与所述配置信息中的版本号的映射关系;

回退模块,用于当所述代码获取模块或所述编译模块执行的操作失败时,从本地服务器获取比所述配置信息中的版本号低的版本号的工程软件包和第三方软件包,并发送至目标服务器。

优选地,所述存储模块还用于,将所述工程代码保存在本地服务器,并建立所述工程代码与所述配置信息中的版本号的映射关系;

所述回退模块还用于,当所述编译模块执行的操作失败时,根据所述配置信息中的版本号从本地服务器中查找所述待发布程序的工程代码。

本发明提出的技术方案中,通过解析配置信息获得的代码库路径以及主程序和子程序之间的依赖关系来从代码库中获取工程代码,对工程代码进行自动编译获得工程软件包,并根据预设配置的定制化脚本获取第三方软件包,将工程软件包和第三方软件包传输到服务器后即完成程序的发布,整个过程中只需开发人员预先设置配置信息即可实现自动执行获取代码、编译、打包和上传的待发布程序的自动化发布操作,简化发布过程和提高发布的可靠性。

附图说明

图1为本发明程序发布方法第一实施例的流程示意图;

图2为本发明程序发布方法第二实施例的流程示意图;

图3为本发明程序发布方法第三实施例的流程示意图;

图4为本发明程序发布系统第一实施例的功能模块示意图;

图5为本发明程序发布系统第二实施例的功能模块示意图;

图6为本发明程序发布系统第三实施例的功能模块示意图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

如图1所示,本发明第一实施例提出的程序发布方法包括:

步骤S100,解析待发布程序的配置信息获得所述待发布程序的代码库路径,以及所述待发布程序的主程序和子程序之间的依赖关系。

具体地,为了有助于用户对发布的程序进行可视化的管理,可以设置发布单,发布单包括待发布程序的版本号项、发布环境项、服务器项、解析器项和定制化脚本项等配置信息。多个开发人员可以根据发布单的信息而参与于同一项目,以增加项目开发的透明度,进而避免团队中的其他人员无法及时得知整个发布进程,开发人员也可根据实际需要对发布单进行修改从而对程序发布进行管理。

发布环境包括开发环境、测试环境和生产验证环境,开发环境是开发人员进行测试的环境,测试环境是专业的测试人员进行测试的环境,而生产验证环境则是UAT(User Acceptance Test,用户验收测试)环境。待发布程序在不同的发布环境下对应着不同的代码,在研发过程中,通常是在开发环境下对发布的程序进行测试,然后再在测试环境下对发布的程序进行测试,最后再在生产验证环境下对发布的程序进行测试。

用户可对本次版本所需执行的定制化脚本进行设置,根据该定制化脚本可以从中央仓库,比如Maven中央仓库,下载一些常用的第三方jar包从而在后续运行程序时可以实现个性化功能定制,也减轻了开发人员的工作量。

步骤S200,根据所述代码库路径和所述依赖关系从代码库中获取待发布程序对应的工程代码。

具体地,代码库中有不同版本的代码,代码库可存储在代码服务器中。解析器解析配置信息后获得待发布程序在发布环境下的代码库路径以及主程序、子程序之间的依赖关系,从而可以根据该代码库路径和依赖关系从代码库中拉取对应的代码组成完整的代码源,即待发布程序在该发布环境下的工程代码。可预先设定保存路径和备份路径,从而将工程代码保存在指定区域。

步骤S300,根据所述配置信息中的定制化脚本下载第三方软件包;

步骤S400,将所述工程代码进行编译并打包为工程软件包。

具体地,待发布程序采用的编程语言可以是Java、C/C++,也可采用其他编程语言,而在不同的编程语言下,采用对应的编译方法以将代码编译打包成软件包。在本实施例中,待发布程序为基于Java语言开发的程序。现有技术中,Java工程在发布过程中需要将代码在JVM虚拟机上进行编译,并打包成多个软件包(jar包),再发布到相应服务器才可执行启动。在此过程中,避免不了人为的手动打包,其不仅复杂而且枯燥,对各工程间的依赖关系,也需发布人员逐一梳理,很容易疏漏而造成发布失败。而本发明中利用gradle或ant插件等编译工具自动将工程代码进行编译,并打包为工程jar包,另外,根据定制化脚本从中央仓库下载常用的第三方jar包,从而解决了jar依赖及工程之间的依赖关系,进而执行本地化编译代码的服务。可预先设定保存路径和备份路径,从而将工程jar包和第三方jar包保存在指定区域。需要说明的是,步骤S300和步骤S400的执行不分先后顺序。

步骤S500,将所述工程软件包和所述第三方软件包发送至目标服务器。

具体地,通过配置信息获取服务器的IP地址及端口,获取同步服务连接,将打包的各项资源文件传输到服务器,其中,各项资源文件包括工程jar包和第三方jar包。

本发明提出的技术方案中,通过解析配置信息获得的代码库路径以及主程序和子程序之间的依赖关系来从代码库中获取工程代码,对工程代码进行自动编译获得工程软件包,并根据预设配置的定制化脚本获取第三方软件包,将工程软件包和第三方软件包传输到服务器后即完成程序的发布,整个过程中只需开发人员预先设置配置信息即可实现自动执行获取代码、编译、打包和上传的待发布程序的自动化发布操作,简化发布过程和提高发布的可靠性。

进一步地,参照图2,为本发明程序发布方法的第二实施例,在上述第一实施例的基础上,所述将所述工程软件包和所述第三方软件包发送至目标服务器的步骤包括:

步骤501,根据所述配置信息中的目标服务器的地址和端口将所述工程软件包和所述第三方软件包发送至所述目标服务器。

具体地,根据预先配置的服务器的IP地址和端口可以将工程软件包和第三方软件包传输至指定的服务器。当该项目需要发布的服务器的IP地址或端口发生变化时,可以在发布单中的服务器项里进行相应的修改。

向服务器发布软件包后,会接收一个软件包发布的进度信息或状态信息,以使开发人员知晓项目发布的进度和状态。状态信息可以是字符串标记,字符串标记包括:Success或Failure。若软件包发布成功,接收字符串标记Success,若软件包发布失败,接收字符串标记Failure。这样用户可以及时知晓发布的状态,当发布失败时,用户可以及时重新发布或修改应用文件内的信息,以保证发布成功。

另外,还可以配置软件包自动发布的发布策略,以设定多个软件包之间的顺序,根据所设定的多个软件包之间的顺序,执行多个软件包一次性同时发布的操作。由于一些大型项目需要同时发布多个软件包,而多个软件包之间存在一定的依赖性,因此,需要通过配置软件包自动发布的发布策略,以设定多个软件包之间的先后顺序,相当于形成一任务链。在设定完多个软件包之间的先后顺序之后,可以执行多个软件包一次性同时发布的操作。

进一步地,参照图3,为本发明程序发布方法的第三实施例,在上述第一或第二实施例的基础上,所述程序发布方法还包括:

步骤S600,在所述目标服务器中运行所述配置信息中的动态脚本以控制所述待发布程序的运行。

具体地,动态脚本包括使所述待发布程序执行运行操作、安装操作和停止操作的指令。开发人员也可对动态脚本进行设置,动态脚本修改后可以控制待发布程序在目标服务器中的运行,比如修改或删除某些程序从而改变其在服务器中的运行,从而实现轻量级的扩展性。

进一步地,在上述第一至第三任一实施例的基础上,所述将所述工程代码进行编译并打包为工程软件包的步骤之后还包括:

步骤S401,将所述工程软件包、所述第三方软件包和所述配置信息中的版本号保存在本地服务器,并建立所述工程软件包和所述第三方软件包与所述配置信息中的版本号的映射关系;

所述程序发布方法还包括:

步骤S701,当获取所述工程代码或编译所述工程代码失败时,从本地服务器获取比所述配置信息中的版本号低的版本号的工程软件包和第三方软件包,并发送至目标服务器。

具体地,当发布出错,即步骤S200或步骤S300或步骤S400执行的操作失败时,有两种解决方式:第一种,回退到一个已有的版本;第二种,查找当前发布版本的工程代码进行修改。

当以上获取工程代码或者编译步骤失败时通知开发人员错误信息,终止发布流程,并可以回退到一个已有的较低版本,从而提高回退版本的效率。

进一步地,所述根据所述代码库路径和所述依赖关系从代码库中获取待发布程序对应的工程代码的步骤之后还包括:

步骤S201,将所述工程代码保存在本地服务器,并建立所述工程代码与所述配置信息中的版本号的映射关系;

所述程序发布方法还包括:

步骤S702,当编译所述工程代码失败时,根据所述配置信息中的版本号从本地服务器中查找所述待发布程序的工程代码。

具体地,当某个环节出现bug(漏洞)后,可通过版本号追溯到当时的环境,并找到当时的代码,方便修复代码。

参照图4,为本发明程序发布系统的第一实施例,该程序发布系统包括:

解析模块100,用于解析待发布程序的配置信息获得所述待发布程序的代码库路径,以及所述待发布程序的主程序和子程序之间的依赖关系。

具体地,为了有助于用户对发布的程序进行可视化的管理,可以设置发布单,发布单包括待发布程序的版本号项、发布环境项、服务器项、解析器项和定制化脚本项等配置信息。多个开发人员可以根据发布单的信息而参与于同一项目,以增加项目开发的透明度,进而避免团队中的其他人员无法及时得知整个发布进程,开发人员也可根据实际需要对发布单进行修改从而对程序发布进行管理。

发布环境包括开发环境、测试环境和生产验证环境,开发环境是开发人员进行测试的环境,测试环境是专业的测试人员进行测试的环境,而生产验证环境则是UAT(User Acceptance Test,用户验收测试)环境。待发布程序在不同的发布环境下对应着不同的代码,在研发过程中,通常是在开发环境下对发布的程序进行测试,然后再在测试环境下对发布的程序进行测试,最后再在生产验证环境下对发布的程序进行测试。

用户可对本次版本所需执行的定制化脚本进行设置,根据该定制化脚本可以从中央仓库,比如Maven中央仓库,下载一些常用的第三方jar包从而在后续运行程序时可以实现个性化功能定制,也减轻了开发人员的工作量。

代码获取模块200,用于根据所述代码库路径和所述依赖关系从代码库中获取待发布程序对应的工程代码。

具体地,代码库中有不同版本的代码,代码库可存储在代码服务器中。解析器解析配置信息后获得待发布程序在发布环境下的代码库路径以及主程序、子程序之间的依赖关系,从而可以根据该代码库路径和依赖关系从代码库中拉取对应的代码组成完整的代码源,即待发布程序在该发布环境下的工程代码。可预先设定保存路径和备份路径,从而将工程代码保存在指定区域。

第三方软件包模块300,用于根据所述配置信息中的定制化脚本下载第三方软件包;

编译模块400,用于将所述工程代码进行编译并打包为工程软件包。

具体地,待发布程序采用的编程语言可以是Java、C/C++,也可采用其他编程语言,而在不同的编程语言下,采用对应的编译方法以将代码编译打包成软件包。在本实施例中,待发布程序为基于Java语言开发的程序。现有技术中,Java工程在发布过程中需要将代码在JVM虚拟机上进行编译,并打包成多个软件包(jar包),再发布到相应服务器才可执行启动。在此过程中,避免不了人为的手动打包,其不仅复杂而且枯燥,对各工程间的依赖关系,也需发布人员逐一梳理,很容易疏漏而造成发布失败。而本发明中利用gradle或ant插件等编译工具自动将工程代码进行编译,并打包为工程jar包,另外,根据定制化脚本从中央仓库下载常用的第三方jar包,从而解决了jar依赖及工程之间的依赖关系,进而执行本地化编译代码的服务。可预先设定保存路径和备份路径,从而将工程jar包和第三方jar包保存在指定区域。

发送模块500,用于将所述工程软件包和所述第三方软件包发送至目标服务器。

具体地,通过配置信息获取服务器的IP地址及端口,获取同步服务连接,将打包的各项资源文件传输到服务器,其中,各项资源文件包括工程jar包和第三方jar包。

本发明提出的技术方案中,通过解析配置信息获得的代码库路径以及主程序和子程序之间的依赖关系来从代码库中获取工程代码,对工程代码进行自动编译获得工程软件包,并根据预设配置的定制化脚本获取第三方软件包,将工程软件包和第三方软件包传输到服务器后即完成程序的发布,整个过程中只需开发人员预先设置配置信息即可实现自动执行获取代码、编译、打包和上传的待发布程序的自动化发布操作,简化发布过程和提高发布的可靠性。

进一步地,在上述程序发布系统第一实施例的基础上,所述发送模块500用于,根据所述配置信息中的目标服务器的地址和端口将所述工程软件包和所述第三方软件包发送至所述目标服务器。

具体地,根据预先配置的服务器的IP地址和端口可以将工程软件包和第三方软件包传输至指定的服务器。当该项目需要发布的服务器的IP地址或端口发生变化时,可以在发布单中的服务器项里进行相应的修改。

向服务器发布软件包后,会接收一个软件包发布的进度信息或状态信息,以使开发人员知晓项目发布的进度和状态。状态信息可以是字符串标记,字符串标记包括:Success或Failure。若软件包发布成功,接收字符串标记Success,若软件包发布失败,接收字符串标记Failure。这样用户可以及时知晓发布的状态,当发布失败时,用户可以及时重新发布或修改应用文件内的信息,以保证发布成功。

另外,还可以配置软件包自动发布的发布策略,以设定多个软件包之间的顺序,根据所设定的多个软件包之间的顺序,执行多个软件包一次性同时发布的操作。由于一些大型项目需要同时发布多个软件包,而多个软件包之间存在一定的依赖性,因此,需要通过配置软件包自动发布的发布策略,以设定多个软件包之间的先后顺序,相当于形成一任务链。在设定完多个软件包之间的先后顺序之后,可以执行多个软件包一次性同时发布的操作。

进一步地,参照图5,为本发明程序发布系统的第二实施例,在上述程序发布系统第一实施例的基础上,所述程序发布系统还包括:

运行模块600,用于在所述目标服务器中运行所述配置信息中的动态脚本以控制所述待发布程序的运行。

具体地,动态脚本包括使所述待发布程序执行运行操作、安装操作和停止操作的指令。开发人员也可对动态脚本进行设置,动态脚本修改后可以控制待发布程序在目标服务器中的运行,比如修改或删除某些程序从而改变其在服务器中的运行,从而实现轻量级的扩展性。

进一步地,参照图6,为本发明程序发布系统的第三实施例,基于本发明程序发布系统的第一或第二实施例,所述程序发布系统还包括:

存储模块800,用于将所述工程软件包、所述第三方软件包和所述配置信息中的版本号保存在本地服务器,并建立所述工程软件包和所述第三方软件包与所述配置信息中的版本号的映射关系;

回退模块700,用于当所述代码获取模块或所述编译模块执行的操作失败时,从本地服务器获取比所述配置信息中的版本号低的版本号的工程软件包和第三方软件包,并发送至目标服务器。

具体地,当发布出错时,有两种解决方式:第一种,回退到一个已有的版本;第二种,查找当前发布版本的工程代码进行修改。

当以上获取工程代码或者编译步骤失败时通知开发人员错误信息,终止发布流程,并可以回退到一个已有的较低版本,从而提高回退版本的效率。

进一步地,所述存储模块800还用于,将所述工程代码保存在本地服务器,并建立所述工程代码与所述配置信息中的版本号的映射关系;

所述回退模块700还用于,当所述编译模块执行的操作失败时,根据所述配置信息中的版本号从本地服务器中查找所述待发布程序的工程代码。

具体地,当某个环节出现bug(漏洞)后,可通过版本号追溯到当时的环境,并找到当时的代码,方便修复代码。

以上仅为本发明的可选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

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