CN114816449A - 自动部署方法及装置 - Google Patents
自动部署方法及装置 Download PDFInfo
- Publication number
- CN114816449A CN114816449A CN202210321740.XA CN202210321740A CN114816449A CN 114816449 A CN114816449 A CN 114816449A CN 202210321740 A CN202210321740 A CN 202210321740A CN 114816449 A CN114816449 A CN 114816449A
- Authority
- CN
- China
- Prior art keywords
- source code
- code library
- target
- library
- version number
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 52
- 238000004590 computer program Methods 0.000 claims description 12
- 238000012163 sequencing technique Methods 0.000 claims description 3
- 238000009434 installation Methods 0.000 description 6
- 230000001419 dependent effect Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 238000010276 construction Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000002955 isolation Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
-
- 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
Abstract
本申请提供一种自动部署方法及装置,该方法包括:解析目标项目,并确定所述目标项目所依赖的至少一个源码库以及所述至少一个源码库中各个源码库之间的拓扑关系;获取所述至少一个源码库,并根据所述拓扑关系,部署所述至少一个源码库;其中,所述目标项目为内网环境下创建的、且需要进行源码部署的项目。本申请提供的自动部署方法及装置,能够实现源码的自动部署,提高了部署的效率。
Description
技术领域
本申请涉及软件开发的自动化部署领域,尤其涉及一种自动部署方法及装置。
背景技术
当对软件项目的源码进行部署时,需要获取软件项目所依赖的所有源码库,并按照依赖关系依次进行安装,之后,才能完成该软件项目的源码部署工作。
在相关技术中,通常采用直接下载、编译然后安装的方式进行部署。若部署过程中出现问题,例如缺少所依赖的源码库、所依赖的源码库版本不匹配等,则需先获取所缺少的源码库,再继续现有的部署工作,影响源码部署的效率。
发明内容
本申请的目的是提供一种自动部署方法及装置,用于实现源码的自动化部署,提高源码部署的效率。
本申请提供一种自动部署方法,包括:
解析目标项目,并确定所述目标项目所依赖的至少一个源码库以及所述至少一个源码库中各个源码库之间的拓扑关系;获取所述至少一个源码库,并根据所述拓扑关系,部署所述至少一个源码库;其中,所述目标项目为内网环境下创建的、且需要进行源码部署的项目。
可选地,所述解析目标项目,并确定所述目标项目所依赖的源码库以及各个源码库之间的依赖关系,包括:根据所述各个源码库之间的依赖关系,构建有向无环图;根据所述有向无环图,确定所述各个源码库的拓扑关系。
可选地,所述根据所述拓扑关系,部署所述至少一个源码库,包括:根据所述拓扑关系,生成所述各个源码库之间的拓扑排序结果;按照所述拓扑排序结果指示的拓扑排序顺序,部署所述至少一个源码库。
可选地,所述获取所述至少一个源码库,包括:获取所述至少一个源码库的目标信息;所述目标信息包括以下至少一项:所述各个源码库的名称,所述各个源码库的版本号;根据所述目标信息,创建配置文件;获取所述内网环境中所述各个源码库的版本号和路径,并基于所述内网环境中所述各个源码库的版本号和路径,更新所述配置文件。
可选地,所述获取所述内网环境中所述各个源码库的版本号和路径,并基于所述内网环境中所述各个源码库的版本号和路径,更新所述配置文件之后,所述方法还包括:在所述配置文件指示所述内网环境中缺少目标源码库、或者,所述内网环境中的所述目标源码库的版本号与所述目标项目所依赖的源码库的版本号不匹配的情况下,向目标服务器发送源码库获取请求;所述源码库获取请求用于控制所述目标服务器从外网环境获取所述目标源码库;接收所述目标服务器发送的所述目标源码库,并存储到预设目录中;更新所述配置文件中所述目标源码库对应的版本号,和/或,所述目标源码库对应的路径;其中,所述目标服务器用于从外网环境获取所述目标源码库;所述外网环境为区别于所述内网环境的网络环境。
可选地,所述获取所述内网环境中所述各个源码库的版本号和路径,并基于所述内网环境中所述各个源码库的版本号和路径,更新所述配置文件之后,所述方法还包括:在所述配置文件指示所述内网环境中缺少目标源码库、或者,所述内网环境中的所述目标源码库的版本号与所述目标项目所依赖的源码库的版本号不匹配的情况下,向目标服务器发送所述配置文件,使得所述目标服务器解析所述配置文件,并从外网环境获取所述目标源码库;接收所述目标服务器发送的所述目标源码库,并存储到预设目录中;更新所述配置文件中所述目标源码库对应的版本号,和/或,所述目标源码库对应的路径;其中,所述目标服务器用于从外网环境获取所述目标源码库;所述外网环境为区别于所述内网环境的网络环境。
可选地,所述按照所述拓扑排序结果指示的拓扑排序顺序,部署所述至少一个源码库,包括:按照所述拓扑排序结果指示的拓扑排序顺序,依次从所述配置文件指示的路径中获取所述各个源码库,并进行源码库的部署。
本申请还提供一种自动部署装置,包括:
解析模块,用于解析目标项目,并确定所述目标项目所依赖的至少一个源码库以及所述至少一个源码库中各个源码库之间的拓扑关系;部署模块,用于获取所述至少一个源码库,并根据所述拓扑关系,部署所述至少一个源码库;其中,所述目标项目为内网环境下创建的、且需要进行源码部署的项目。
可选地,所述装置还包括:构建模块,用于根据所述各个源码库之间的依赖关系,构建有向无环图;所述解析模块,具体用于根据所述有向无环图,确定所述各个源码库的拓扑关系。
可选地,所述装置还包括:生成模块,用于根据所述拓扑关系,生成所述各个源码库之间的拓扑排序结果;所述部署模块,具体用于按照所述拓扑排序结果指示的拓扑排序顺序,部署所述至少一个源码库。
可选地,所述装置还包括:获取模块,用于获取所述至少一个源码库的目标信息;所述目标信息包括以下至少一项:所述各个源码库的名称,所述各个源码库的版本号;创建模块,用于根据所述目标信息,创建配置文件;更新模块,还用于获取所述内网环境中所述各个源码库的版本号和路径,并基于所述内网环境中所述各个源码库的版本号和路径,更新所述配置文件。
可选地,所述装置还包括:发送模块,用于在所述配置文件指示所述内网环境中缺少目标源码库、或者,所述内网环境中的所述目标源码库的版本号与所述目标项目所依赖的源码库的版本号不匹配的情况下,向目标服务器发送源码库获取请求;所述源码库获取请求用于控制所述目标服务器从外网环境获取所述目标源码库;接收模块,用于接收所述目标服务器发送的所述目标源码库,并存储到预设目录中;所述更新模块,还用于更新所述配置文件中所述目标源码库对应的版本号,和/或,所述目标源码库对应的路径;其中,所述目标服务器用于从外网环境获取所述目标源码库;所述外网环境为区别于所述内网环境的网络环境。
可选地,所述发送模块,还用于在所述配置文件指示所述内网环境中缺少目标源码库、或者,所述内网环境中的所述目标源码库的版本号与所述目标项目所依赖的源码库的版本号不匹配的情况下,向目标服务器发送所述配置文件,使得所述目标服务器解析所述配置文件,并从外网环境获取所述目标源码库;所述接收模块,还用于接收所述目标服务器发送的所述目标源码库,并存储到预设目录中;所述更新模块,还用于更新所述配置文件中所述目标源码库对应的版本号,和/或,所述目标源码库对应的路径;其中,所述目标服务器用于从外网环境获取所述目标源码库;所述外网环境为区别于所述内网环境的网络环境。
可选地,所述部署模块,具体用于按照所述拓扑排序结果指示的拓扑排序顺序,依次从所述配置文件指示的路径中获取所述各个源码库,并进行源码库的部署。
本申请还提供一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现如上述任一种所述自动部署方法的步骤。
本申请还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述自动部署方法的步骤。
本申请还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述自动部署方法的步骤。
本申请提供的自动部署方法及装置,在需要对目标项目进行源码部署时,解析目标项目,并确定所述目标项目所依赖的至少一个源码库以及所述至少一个源码库中各个源码库之间的拓扑关系,之后,获取所述至少一个源码库,并根据所述拓扑关系,部署所述至少一个源码库。通过对需要部署的项目进行分析,得到项目所依赖的各个源码库之间的拓扑关系,实现源码部署的自动化;通过采用优先获取所有依赖的源码库,再进行部署的方式,提高源码的部署效率。
附图说明
为了更清楚地说明本申请或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请提供的自动部署方法的流程示意图;
图2是本申请提供的用于指示各个源码库之间的依赖关系的有向无环图示意图;
图3是本申请提供的自动部署装置的结构示意图;
图4是本申请提供的电子设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请中的附图,对本申请中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。此外,说明书以及权利要求中“和/或”表示所连接对象的至少其中之一,字符“/”,一般表示前后关联对象是一种“或”的关系。
在相关技术中,当部署项目(包括:软件或者工具)时,通常采用人工的方式进行源码的部署,并且,在部署过程中,若服务器上存在项目所依赖的源码库,则直接从服务器上获取该源码库,并通过操作指令进行代码库的安装;若服务器上不存在项目所依赖的源码库、或者源码库版本不匹配,则需要从互联网上下载对应版本的源码库。
由于数据保密性的要求,目前大部分开发工作主要是在物理隔离的内网服务器上进行,数据的移动需要一定的行政手续,流程复杂。对于具有复杂依赖关系的源码开发环境的部署,人工方式往往难以一次性确定项目所依赖的所有源码库,并且部署过程中需要注意相互的依赖顺序,因此需要大量的时间。
为了解决上述技术问题,方便在内网服务器上实现具有复杂依赖关系的源码库部署的自动化,本申请实施例提供了一种自动部署方法,不仅能够自动识别出项目所依赖的所有源码库,还能够自动获取对应版本的源码库,实现源码的自动化部署。
下面结合附图,通过具体的实施例及其应用场景对本申请实施例提供的自动部署方法进行详细地说明。
如图1所示,本申请实施例提供的一种自动部署方法,该方法可以包括下述步骤101和步骤102:
步骤101、解析目标项目,并确定所述目标项目所依赖的至少一个源码库以及所述至少一个源码库中各个源码库之间的拓扑关系。
其中,所述目标项目为内网环境下创建的、且需要进行源码部署的项目。
示例性地,当需要在内网服务器上对上述目标项目进行源码部署时,需要对该目标进行解析,确定该目标项目所依赖的源码库,即上述至少一个源码库。
示例性地,由于目标项目所依赖的源码库之间同样存在着依赖关系,在进行源码部署时,需要根据该依赖关系进行源码的部署。因此,还需要确定目标项目所依赖的至少一个源码库的各个源码库之间的拓扑关系,该拓扑关系由各个源码库之间的依赖关系确定。
具体地,上述步骤101,可以包括以下步骤101a1和步骤101a2:
步骤101a1、根据所述各个源码库之间的依赖关系,构建有向无环图。
步骤101a2、根据所述有向无环图,确定所述各个源码库的拓扑关系。
可以理解的是,上述有向无环图是指一个无回路的有向图。如图2所示,code_0是需部署的源码库(即上述目标项目),依次分析其所依赖的其他源码库,发现code_0依赖于code_1和code_2,code_1依赖于code_3和code_4,code_2依赖于code_4和code_5,根据所有源码库的依赖关系,构建一个有向无环图。该有向无环图的每个节点表示一个源码库,根据该有向无环图,可以确定各个源码库之间的拓扑关系。
步骤102、获取所述至少一个源码库,并根据所述拓扑关系,部署所述至少一个源码库。
示例性地,为了能够保证部署过程的连续性,需要先获取该目标项目所依赖的所有源码库,之后,再根据各个源码库之间的拓扑关系,进行源码库的部署。
具体地,上述步骤102,可以包括以下步骤102a1和步骤102a2:
步骤102a1、根据所述拓扑关系,生成所述各个源码库之间的拓扑排序结果。
步骤102a2、按照所述拓扑排序结果指示的拓扑排序顺序,部署所述至少一个源码库。
示例性地,上述拓扑排序顺序用于指示上述至少一个源码库的部署顺序。
举例说明,当获取到上述至少一个源码库中各个源码库之间的拓扑关系后,可以根据该拓扑关系,确定各个源码之间的拓扑排序结果,如图2所示,源码库code_0、code_1、code_2、code_3和code_4的拓扑排序结果为:[code_3,code_4,code_5,code_1,code_2,code_0],可以按照该拓扑排序结果指示的拓扑排序顺序,依次安装各个源码库。上述源码库code_0、code_1、code_2、code_3和code_4的安装顺序为code_3,code_4,code_5,code_1,code_2,code_0。
如此,当需要部署目标项目时,可以通过解析目标项目,并确定所述目标项目所依赖的至少一个源码库以及所述至少一个源码库中各个源码库之间的拓扑关系,之后,获取所述至少一个源码库,并根据所述拓扑关系,部署所述至少一个源码库。通过对需要部署的项目进行分析,得到项目所依赖的各个源码库之间的拓扑关系,实现源码部署的自动化;通过采用优先获取所有依赖的源码库,再进行部署的方式,提高源码的部署效率。
可选地,在本申请实施例中,由于存储源码库的内网服务器处于内网环境下,该内网服务器上可能不存在该目标项目所依赖的源码库,或者,该内网服务器上存储的源码库的版本与该目标项目所依赖的源码库的版本不匹配,则需要从互联网上下载对应版本的源码库。
示例性地,上述步骤102中获取所述至少一个源码库,可以包括以下步骤102b1至102b3:
步骤102b1、获取所述至少一个源码库的目标信息。
其中,所述目标信息包括以下至少一项:所述各个源码库的名称,所述各个源码库的版本号。
步骤102b2、根据所述目标信息,创建配置文件。
步骤102b3、获取所述内网环境中所述各个源码库的版本号和路径,并基于所述内网环境中所述各个源码库的版本号和路径,更新所述配置文件。
示例性地,本申请实施例提供的字数部署方法,能够自动递归分析目标项目所依赖的源码库的名称和版本号,并将获取到的源码库的名称和版本号存储到创建的配置文件中,该配置文件可以为codePackage.cfg配置文件。
示例性地,在获取到各个源码库的名称及版本号之后,从上述内网服务器上述获取对应源码库的路径,并将该路径信息更新到codePackage.cfg配置文件中。
具体地,该codePackage.cfg配置文件中的内容如以下表1所示:
Name | Version | Path |
code_0 | 1.0.0 | /public/workspace/sourcecode/code0 |
code_2 | 2.0.0 | /public/workspace/sourcecode/code2 |
code_1 | 3.0.0 | /public/workspace/sourcecode/code1 |
code_5 | 3.0.1/2.0.3 | |
code_4 | 1.2.1 | |
code_3 | 4.0.1 |
表1
如表1所示,对于内网服务器上存储的源码库,可以包括以下三种情况:
情况1:
内网服务器上存储有源码库的安装包,并且与目标项目所依赖的源码库的版本相匹配。此时,将该源码库在内网服务器上的路径添加到codePackage.cfg配置文件中对应的Path项中。例如,code_0、code_1和code_2在内网服务器上存储有对应版本的源码安装包,则code_0、code_1和code_2对应的Path项为该源码库在内网服务器上的存储路径。
情况2:
内网服务器上存储有源码库的安装包,但与目标项目所依赖的源码库的版本不匹配。此时,将codePackage.cfg配置文件中该源码库对应的Version项更新为:目标项目所依赖的版本号以及内网服务器上该源码库的版本号,形式为“依赖的版本号/现有的版本号”。例如,目标项目所依赖的code_5的版本号为3.0.1,而内网服务器上存储的code_5的版本号为2.0.3,此时,将codePackage.cfg配置文件中该源码库code_5对应的Version项更新为“3.0.1/2.0.3”。
情况3:
内网服务器上未存储有源码库的安装包,此时,不需要对codePackage.cfg配置文件进行修改。例如,内网服务器上未存储有源码库code_3和code_4,此时,该codePackage.cfg配置文件中,code_3和code_4对应的Path项为空。
示例性地,在根据各个源码库的情况,更新上述目标配置文件后,需要从互联网上下载内网服务器上缺少的源码库。
具体地,可以通过以下两种方式获取内网服务器上缺少的源码库:
方式1:
在方式1中,可以通过向目标服务器发送指令的方式,获取内网服务器上缺少的源码库。
示例性地,上述步骤102b3之后,还可以包括以下步骤102b4至步骤102b6:
步骤102b4、在所述配置文件指示所述内网环境中缺少目标源码库、或者,所述内网环境中的所述目标源码库的版本号与所述目标项目所依赖的源码库的版本号不匹配的情况下,向目标服务器发送源码库获取请求。
其中,所述源码库获取请求用于控制所述目标服务器从外网环境获取所述目标源码库。
步骤102b5、接收所述目标服务器发送的所述目标源码库,并存储到预设目录中。
步骤102b6、更新所述配置文件中所述目标源码库对应的版本号,和/或,所述目标源码库对应的路径。
其中,所述目标服务器用于从外网环境获取所述目标源码库;所述外网环境为区别于所述内网环境的网络环境。
示例性地,上述目标服务接收到上述源码库获取请求后,从互联网上下载对应版本的目标源码库,并发送给上述内网服务。
示例性地,内网服务器在接收到上述目标源码库之后,将该目标源码库存储到预设目录下,并将该目标源码库在内网服务器的路径更新至上述配置文件中。
举例说明,如表1所示,内网服务器接收目标服务器发送的源码库code_4后,将该源码库code_4存储到目录/public/workspace/sourcecode/下,此时,该源码库code_4的存储路径为/public/workspace/sourcecode/code_4。
方式2:
在方式2中,可以通过向目标服务器发送上述配置文件的方式,获取内网服务器上缺少的源码库。
示例性地,上述步骤102b3之后,还可以包括以下步骤102b7至步骤102b9:
步骤102b7、在所述配置文件指示所述内网环境中缺少目标源码库、或者,所述内网环境中的所述目标源码库的版本号与所述目标项目所依赖的源码库的版本号不匹配的情况下,向目标服务器发送所述配置文件,使得所述目标服务器解析所述配置文件,并从外网环境获取所述目标源码库。
步骤102b8、接收所述目标服务器发送的所述目标源码库,并存储到预设目录中。
步骤102b9、更新所述配置文件中所述目标源码库对应的版本号,和/或,所述目标源码库对应的路径。
其中,所述目标服务器用于从外网环境获取所述目标源码库;所述外网环境为区别于所述内网环境的网络环境。
示例性地,内网服务器将codePackage.cfg文件拷贝到外网服务器(可以正常连接互联网的服务器),该部署工具的下载模块会自动解析codePackage.cfg文件,并对源码库进行更新。
具体更新策略包括:a)若版本号的不匹配,则根据最新的版本号,进行增量更新,比如code_5。b)若缺少源码库,比如code_4,则下载对应的源码库。
示例性地,从互联网下载源码库之后,拷贝到内网服务器。之后,内网服务器将拷贝的源码库存放至指定的目录,同时更新codePackage.cfg配置文件,更新过程有以下2种情况:
a)版本号不一致:由于已经进行了增量更新,所以保留最新的版本号,以及原有的路径信息。
b)文件缺失:将源码拷贝到指定目录,同时更新codePackage.cfg中的路径信息。
更新后的codePackage.cfg配置文件如下表2所示:
Name | Version | Path |
code_0 | 1.0.0 | /public/workspace/sourcecode/code0 |
code_2 | 2.0.0 | /public/workspace/sourcecode/code2 |
code_1 | 3.0.0 | /public/workspace/sourcecode/code1 |
code_5 | 3.0.1 | /public/workspace/sourcecode/code5 |
code_4 | 1.2.1 | /public/workspace/sourcecode/code4 |
code_3 | 4.0.1 | /public/workspace/sourcecode/code3 |
表2
示例性地,在获取到更新后的配置文件后,便可以根据该配置文件,进行源码的部署。
示例性地,上述步骤102中按照所述拓扑排序结果指示的拓扑排序顺序,部署所述至少一个源码库,可以包括以下步骤102c:
步骤102c、按照所述拓扑排序结果指示的拓扑排序顺序,依次从所述配置文件指示的路径中获取所述各个源码库,并进行源码库的部署。
示例性地,在获取到更新后的配置文件后,可以解析codePackage.cfg配置文件,根据文件中的路径,将源码库拷贝到用户指定的安装目录下。由于不同工具之间具有依赖关系,因此根据源码的拓扑排序顺序进行编译、安装,从而减少部署时因缺少依赖库而出现的问题。
本申请实施例提供的自动部署方法,在需要对目标项目进行源码部署时,尤其对于有复杂依赖关系的源码库,可以自动解析其所依赖的其他源码库,构建依赖关系的有向无环图,确定拓扑排序顺序,同时还可以自动检索内网服务器的部署环境及所依赖源码库的相关信息,确定内网服务器缺少的源码库,保证一次性的配置完成其所依赖的源码库,从而实现物理隔离网内源码库的自动化部署,提高源码库的管理效率。
需要说明的是,本申请实施例提供的自动部署方法,执行主体可以为自动部署装置,或者该自动部署装置中的用于执行自动部署方法的控制模块。本申请实施例中以自动部署装置执行自动部署方法为例,说明本申请实施例提供的自动部署装置。
需要说明的是,本申请实施例中,上述各个方法附图所示的。自动部署方法均是以结合本申请实施例中的一个附图为例示例性的说明的。具体实现时,上述各个方法附图所示的自动部署方法还可以结合上述实施例中示意的其它可以结合的任意附图实现,此处不再赘述。
下面对本申请提供的自动部署装置进行描述,下文描述的与上文描述的自动部署方法可相互对应参照。
图3为本申请一实施例提供的自动部署装置的结构会示意图,如图3所示,具体包括:
解析模块301,用于解析目标项目,并确定所述目标项目所依赖的至少一个源码库以及所述至少一个源码库中各个源码库之间的拓扑关系;部署模块303,用于获取所述至少一个源码库,并根据所述拓扑关系,部署所述至少一个源码库;其中,所述目标项目为内网环境下创建的、且需要进行源码部署的项目。
可选地,所述装置还包括:构建模块,用于根据所述各个源码库之间的依赖关系,构建有向无环图;所述解析模块301,具体用于根据所述有向无环图,确定所述各个源码库的拓扑关系。
可选地,所述装置还包括:生成模块,用于根据所述拓扑关系,生成所述各个源码库之间的拓扑排序结果;所述部署模块303,具体用于按照所述拓扑排序结果指示的拓扑排序顺序,部署所述至少一个源码库。
可选地,所述装置还包括:获取模块,用于获取所述至少一个源码库的目标信息;所述目标信息包括以下至少一项:所述各个源码库的名称,所述各个源码库的版本号;创建模块,用于根据所述目标信息,创建配置文件;更新模块,还用于获取所述内网环境中所述各个源码库的版本号和路径,并基于所述内网环境中所述各个源码库的版本号和路径,更新所述配置文件。
可选地,所述装置还包括:发送模块,用于在所述配置文件指示所述内网环境中缺少目标源码库、或者,所述内网环境中的所述目标源码库的版本号与所述目标项目所依赖的源码库的版本号不匹配的情况下,向目标服务器发送源码库获取请求;所述源码库获取请求用于控制所述目标服务器从外网环境获取所述目标源码库;接收模块,用于接收所述目标服务器发送的所述目标源码库,并存储到预设目录中;所述更新模块,还用于更新所述配置文件中所述目标源码库对应的版本号,和/或,所述目标源码库对应的路径;其中,所述目标服务器用于从外网环境获取所述目标源码库;所述外网环境为区别于所述内网环境的网络环境。
可选地,所述发送模块,还用于在所述配置文件指示所述内网环境中缺少目标源码库、或者,所述内网环境中的所述目标源码库的版本号与所述目标项目所依赖的源码库的版本号不匹配的情况下,向目标服务器发送所述配置文件,使得所述目标服务器解析所述配置文件,并从外网环境获取所述目标源码库;所述接收模块,还用于接收所述目标服务器发送的所述目标源码库,并存储到预设目录中;所述更新模块,还用于更新所述配置文件中所述目标源码库对应的版本号,和/或,所述目标源码库对应的路径;其中,所述目标服务器用于从外网环境获取所述目标源码库;所述外网环境为区别于所述内网环境的网络环境。
可选地,所述部署模块303,具体用于按照所述拓扑排序结果指示的拓扑排序顺序,依次从所述配置文件指示的路径中获取所述各个源码库,并进行源码库的部署。
本申请提供的自动部署装置,在需要对目标项目进行源码部署时,尤其对于有复杂依赖关系的源码库,可以自动解析其所依赖的其他源码库,构建依赖关系的有向无环图,确定拓扑排序顺序,同时还可以自动检索内网服务器的部署环境及所依赖源码库的相关信息,确定内网服务器缺少的源码库,保证一次性的配置完成其所依赖的源码库,从而实现物理隔离网内源码库的自动化部署,提高源码库的管理效率。
图4示例了一种电子设备的实体结构示意图,如图4所示,该电子设备可以包括:处理器(processor)410、通信接口(Communications Interface)420、存储器(memory)430和通信总线440,其中,处理器410,通信接口420,存储器430通过通信总线440完成相互间的通信。处理器410可以调用存储器430中的逻辑指令,以执行自动部署方法,该方法包括:解析目标项目,并确定所述目标项目所依赖的至少一个源码库以及所述至少一个源码库中各个源码库之间的拓扑关系;获取所述至少一个源码库,并根据所述拓扑关系,部署所述至少一个源码库;其中,所述目标项目为内网环境下创建的、且需要进行源码部署的项目。
此外,上述的存储器430中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本申请还提供一种计算机程序产品,所述计算机程序产品包括存储在计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法所提供的自动部署方法,该方法包括:解析目标项目,并确定所述目标项目所依赖的至少一个源码库以及所述至少一个源码库中各个源码库之间的拓扑关系;获取所述至少一个源码库,并根据所述拓扑关系,部署所述至少一个源码库;其中,所述目标项目为内网环境下创建的、且需要进行源码部署的项目。
又一方面,本申请还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各提供的自动部署方法,该方法包括:解析目标项目,并确定所述目标项目所依赖的至少一个源码库以及所述至少一个源码库中各个源码库之间的拓扑关系;获取所述至少一个源码库,并根据所述拓扑关系,部署所述至少一个源码库;其中,所述目标项目为内网环境下创建的、且需要进行源码部署的项目。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (10)
1.一种自动部署方法,其特征在于,包括:
解析目标项目,并确定所述目标项目所依赖的至少一个源码库以及所述至少一个源码库中各个源码库之间的拓扑关系;
获取所述至少一个源码库,并根据所述拓扑关系,部署所述至少一个源码库;
其中,所述目标项目为内网环境下创建的、且需要进行源码部署的项目。
2.根据权利要求1所述的方法,其特征在于,所述解析目标项目,并确定所述目标项目所依赖的源码库以及各个源码库之间的依赖关系,包括:
根据所述各个源码库之间的依赖关系,构建有向无环图;
根据所述有向无环图,确定所述各个源码库的拓扑关系。
3.根据权利要求2所述的方法,其特征在于,所述根据所述拓扑关系,部署所述至少一个源码库,包括:
根据所述拓扑关系,生成所述各个源码库之间的拓扑排序结果;
按照所述拓扑排序结果指示的拓扑排序顺序,部署所述至少一个源码库。
4.根据权利要求3所述的方法,其特征在于,所述获取所述至少一个源码库,包括:
获取所述至少一个源码库的目标信息;所述目标信息包括以下至少一项:所述各个源码库的名称,所述各个源码库的版本号;
根据所述目标信息,创建配置文件;
获取所述内网环境中所述各个源码库的版本号和路径,并基于所述内网环境中所述各个源码库的版本号和路径,更新所述配置文件。
5.根据权利要求4所述的方法,其特征在于,所述获取所述内网环境中所述各个源码库的版本号和路径,并基于所述内网环境中所述各个源码库的版本号和路径,更新所述配置文件之后,所述方法还包括:
在所述配置文件指示所述内网环境中缺少目标源码库、或者,所述内网环境中的所述目标源码库的版本号与所述目标项目所依赖的源码库的版本号不匹配的情况下,向目标服务器发送源码库获取请求;所述源码库获取请求用于控制所述目标服务器从外网环境获取所述目标源码库;
接收所述目标服务器发送的所述目标源码库,并存储到预设目录中;
更新所述配置文件中所述目标源码库对应的版本号,和/或,所述目标源码库对应的路径;
其中,所述目标服务器用于从外网环境获取所述目标源码库;所述外网环境为区别于所述内网环境的网络环境。
6.根据权利要求4所述的方法,其特征在于,所述获取所述内网环境中所述各个源码库的版本号和路径,并基于所述内网环境中所述各个源码库的版本号和路径,更新所述配置文件之后,所述方法还包括:
在所述配置文件指示所述内网环境中缺少目标源码库、或者,所述内网环境中的所述目标源码库的版本号与所述目标项目所依赖的源码库的版本号不匹配的情况下,向目标服务器发送所述配置文件,使得所述目标服务器解析所述配置文件,并从外网环境获取所述目标源码库;
接收所述目标服务器发送的所述目标源码库,并存储到预设目录中;
更新所述配置文件中所述目标源码库对应的版本号,和/或,所述目标源码库对应的路径;
其中,所述目标服务器用于从外网环境获取所述目标源码库;所述外网环境为区别于所述内网环境的网络环境。
7.根据权利要求5或6所述的方法,其特征在于,所述按照所述拓扑排序结果指示的拓扑排序顺序,部署所述至少一个源码库,包括:
按照所述拓扑排序结果指示的拓扑排序顺序,依次从所述配置文件指示的路径中获取所述各个源码库,并进行源码库的部署。
8.一种自动部署装置,其特征在于,所述装置包括:
解析模块,用于解析目标项目,并确定所述目标项目所依赖的至少一个源码库以及所述至少一个源码库中各个源码库之间的拓扑关系;
部署模块,用于获取所述至少一个源码库,并根据所述拓扑关系,部署所述至少一个源码库;
其中,所述目标项目为内网环境下创建的、且需要进行源码部署的项目。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述自动部署方法的步骤。
10.一种计算机程序产品,包括计算机程序/指令,其特征在于,该计算机程序/指令被处理器执行时实现权利要求1至7中任一项所述自动部署方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210321740.XA CN114816449A (zh) | 2022-03-25 | 2022-03-25 | 自动部署方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210321740.XA CN114816449A (zh) | 2022-03-25 | 2022-03-25 | 自动部署方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114816449A true CN114816449A (zh) | 2022-07-29 |
Family
ID=82533197
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210321740.XA Pending CN114816449A (zh) | 2022-03-25 | 2022-03-25 | 自动部署方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114816449A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116774989A (zh) * | 2023-08-23 | 2023-09-19 | 国网信息通信产业集团有限公司 | 一种软件构建发布装置的设计和实现方法、系统及终端 |
-
2022
- 2022-03-25 CN CN202210321740.XA patent/CN114816449A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116774989A (zh) * | 2023-08-23 | 2023-09-19 | 国网信息通信产业集团有限公司 | 一种软件构建发布装置的设计和实现方法、系统及终端 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111142903B (zh) | 一种基于文件对比的配置文件交互式更新方法及装置 | |
US5745897A (en) | Method and system for compiling management information base specifications | |
US6117187A (en) | Automatic generation of a software installation package | |
US9348582B2 (en) | Systems and methods for software dependency management | |
US8677348B1 (en) | Method and apparatus for determining least risk install order of software patches | |
CN108319460B (zh) | 应用程序安装包的生成方法、装置、电子设备及存储介质 | |
CN109324799A (zh) | 一种代码编译方法、计算机装置及计算机可读存储介质 | |
US20070028229A1 (en) | Method and system for dynamic generation of computer system installation instructions | |
CN105373401A (zh) | 软件包自动发布方法和系统 | |
CN112764753B (zh) | 一种项目的部署方法、装置、电子设备及存储介质 | |
US9542173B2 (en) | Dependency handling for software extensions | |
CN111045944A (zh) | 回归测试方法、装置、系统及计算机可读存储介质 | |
CN106873966B (zh) | 一种应用程序开发方法及装置 | |
CN114816449A (zh) | 自动部署方法及装置 | |
CN110716786A (zh) | 一种页面展示方法、系统及存储介质 | |
CN109542942B (zh) | 函数调用的查询方法及装置、电子设备 | |
JP7015625B2 (ja) | プロセスアプリケーションを開発及び診断するためのステップバック機構 | |
US20090293053A1 (en) | Method and system for dynamic generation of computer system installation instructions | |
CN115469844A (zh) | 代码处理方法、系统、计算机集群、介质及程序产品 | |
CN113849181A (zh) | 交叉编译工具链构建方法、装置、电子设备及存储介质 | |
US9477447B1 (en) | Semantic representations of software extensions | |
CN113688028A (zh) | 代码提交方法和装置 | |
CN117435510B (zh) | 自动化测试方法、终端设备及计算机可读存储介质 | |
CN113672269B (zh) | 数据处理方法、系统、电子设备及程序产品 | |
CN108664259B (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 |