代码编译方法、装置、设备及存储介质
技术领域
本申请实施例涉及计算机技术领域,特别涉及一种代码编译方法、装置、设备及存储介质。
背景技术
第三方包是指由第三方开发的开源包,开发人员可以利用第三方包设计自己的程序。
在相关技术中,通常采用在线的第三方包下载方式,即,在代码编译的过程中,代码编译框架获取第三方包的下载路径;向互联网中的网络服务器发送该第三方包的下载请求,下载请求包括该第三方包的下载路径;接收网络服务器基于下载请求下载到的第三方包;代码编译框架通过第三方包进行编译。
发明内容
本申请实施例提供一种代码编译方法、装置、设备及存储介质。所述技术方案如下:
一方面,本申请实施例提供一种代码编译方法,应用于计算机设备的代码编译框架中,所述计算机设备包括堡垒服务器,所述代码编译框架包括离线下载接口,所述方法包括:
获取待编译源码对应的第三方包的下载路径,所述第三方包是指由第三方提供的用于对所述待编译源码进行编译的开源包;
调用所述离线下载接口向所述堡垒服务器发送所述第三方包的下载请求,所述堡垒服务器是用于访问互联网中的网络服务器的内网服务器,所述下载请求包括所述第三方包的下载路径;
接收所述堡垒服务器基于所述下载请求从所述网络服务器中下载到的所述第三方包;
通过所述第三方包对所述待编译源码进行编译。
另一方面,本申请实施例提供一种代码编译方法,应用于堡垒服务器中,所述堡垒服务器是用于访问互联网中的网络服务器的内网服务器,所述方法包括:
接收代码编译框架发送的第三方包的下载请求,所述第三方包是指由第三方开发的用于代码编译的开源包,所述下载请求包括所述第三方包的下载路径;
基于所述下载路径,从所述网络服务器中下载所述第三方包;
将所述第三方包发送给所述代码编译框架,所述代码编译框架用于通过所述第三方包对待编译源码进行编译。
另一方面,本申请实施例提供一种代码编译装置,所述装置包括:
处理器;
用于存储所述处理器的可执行指令的存储器;
其中,所述处理器被配置为:
获取待编译源码对应的第三方包的下载路径,所述第三方包是指由第三方提供的用于对所述待编译源码进行编译的开源包;
调用离线下载接口向堡垒服务器发送所述第三方包的下载请求,所述堡垒服务器是用于访问互联网中的网络服务器的内网服务器,所述下载请求包括所述第三方包的下载路径;
接收所述堡垒服务器基于所述下载请求从所述网络服务器中下载到的所述第三方包;
通过所述第三方包对所述待编译源码进行编译。
又一方面,本申请实施例提供一种代码编译装置,所述装置包括:
处理器;
用于存储所述处理器的可执行指令的存储器;
其中,所述处理器被配置为:
接收代码编译框架发送的第三方包的下载请求,所述第三方包是指由第三方开发的用于代码编译的开源包,所述下载请求包括所述第三方包的下载路径;
基于所述下载路径,从网络服务器中下载所述第三方包;
将所述第三方包发送给所述代码编译框架,所述代码编译框架用于通过所述第三方包对待编译源码进行编译。
再一方面,本申请实施例提供一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器存储有计算机程序,所述计算机程序由所述处理器加载并执行以实现如上述方面所述的代码编译方法。
又一方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序由处理器加载并执行以实现如上述方面所述的代码编译方法。
本申请实施例提供的技术方案可以带来如下有益效果:
通过将第三方包的下载请求发送给堡垒服务器,由堡垒服务器基于下载请求从互联网中的网络服务器中下载第三方包,避免了代码编译框架直接从网络服务器中下载第三方包,降低了代码编译框架的安全性受到威胁的概率。
附图说明
图1示出了相关技术中的代码编译的架构图;
图2示出了本申请一个实施例提供的代码编译的架构图;
图3是本申请一个实施例提供的代码编译方法的流程图;
图4是本申请一个实施例提供的下载请求发送方法的流程图;
图5是本申请另一个实施例提供的下载请求发送方法的流程图;
图6是本申请另一个实施例提供的代码编译方法的流程图;
图7是本申请又一个实施例提供的代码编译方法的流程图;
图8是本申请又一个实施例提供的代码编译方法的流程图;
图9是本申请一个实施例提供的计算机设备的结构框图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
请参考图1,其示出了相关技术中的代码编译的架构图。相关技术中的代码编译的架构图包括:代码编译框架10和网络服务器11。在相关技术中,代码编译框架10获取第三方包的下载路径。代码编译框架10向互联网中的网络服务器11发送该第三方包的下载请求,下载请求包括该第三方包的下载路径。网络服务器11基于下载请求下载第三方包,将第三方包发送给代码编译框架10。代码编译框架10接收网络服务器11发送的第三方包;代码编译框架10通过第三方包进行编译。
然而,上述相关技术中,代码编译框架直接访问互联网中的网络服务器获取第三方包,会导致代码编译框架的安全性受到威胁。
请参考图2,其示出了本申请一个实施例提供的代码编译的架构图。本申请实施例中的代码编译的架构图包括:代码编译框架20、堡垒服务器21和网络服务器22。代码编译框架20向堡垒服务器21发送第三方包的下载请求。堡垒服务器21基于该下载请求从网络服务器22中下载该第三方包。堡垒服务器21将该第三方包发送给代码编译框架20。代码编译框架20通过第三方包进行编译。
在本申请实施例中,通过将第三方包的下载请求发送给堡垒服务器,由堡垒服务器基于下载请求从互联网中的网络服务器中下载第三方包,避免了代码编译框架直接从网络服务器中下载第三方包,降低了代码编译框架的安全性受到威胁的概率。
请参考图3,其示出了本申请一个实施例提供的代码编译方法的流程图。该方法可应用于上文介绍的如图2所示的计算机设备的代码编译框架20中,计算机设备是指具备计算和处理能力的电子设备,计算机设备包括堡垒服务器,代码编译框架包括离线下载接口。该方法可以包括如下几个步骤。
步骤301,获取待编译源码对应的第三方包的下载路径。
待编译源码是指还未编译的最原始代码。在本申请实施例中,第三方包是指由第三方提供的用于对待编译源码进行编译的开源包。第三方包可以是源码、可执行文件或二进制库等形式的文件。示例性地,下载路径可以是url(uniform resource locator,统一资源定位符),用于表征第三方包的下载位置。
步骤302,调用离线下载接口向堡垒服务器发送第三方包的下载请求。
离线下载接口是指具有实现离线下载功能的接口。离线下载接口与普通接口不同,离线下载接口不会直接访问互联网中的网络服务器下载第三方包,而是会将下载请求发送给堡垒服务器。下载请求包括第三方包的下载路径在本申请实施例中,堡垒服务器是用于访问互联网中的网络服务器的内网服务器,堡垒服务器是可以连接互联网的服务器,堡垒服务器上的服务是受监控的,可以作为连接互联网和内部网络的桥梁。示例性地,离线下载接口内封装有堡垒服务器的标识,离线下载接口基于上述堡垒服务器的标识,向该堡垒服务器发送第三方包的下载请求。
步骤303,接收堡垒服务器基于下载请求从网络服务器中下载到的第三方包。
堡垒服务器接收到第三方包的下载请求之后,基于下载请求从网络服务器中下载第三方包,并将下载完成的第三方包发送给代码编译框架,相应地,代码编译框架接收堡垒服务器发送的第三方包。
步骤304,通过第三方包对待编译源码进行编译。
代码编译框架接收到第三方包之后,可以通过第三方包对待编译源码进行编译。
综上所述,本申请实施例提供的技术方案中,通过将第三方包的下载请求发送给堡垒服务器,由堡垒服务器基于下载请求从互联网中的网络服务器中下载第三方包,避免了代码编译框架直接从网络服务器中下载第三方包,降低了代码编译框架的安全性受到威胁的概率。
另外,本申请实施例提供的技术方案,相较于相关技术中通过静态分析编译脚本获得第三方包的下载路径,因为本申请实施例提供的技术方案可以根据开发环境、代码编译框架等因素动态获取第三方包,所以本申请实施例提供的第三方包的下载路径获取更为准确。
如图4所示,本申请实施例提供了一种下载请求发送方法的流程图。该方法可以包括以下几个步骤:
步骤401,将第三方包的下载路径转化为字符串。
示例性地,可以通过如下方式将第三方包的下载路径转化为字符串:对第三方包的下载路径做哈希处理,得到字符串;或者,对第三方包的下载路径基于编码规则进行转化,得到字符串。哈希处理是指将任意长度的字符映射为固定长度的二进制字符串。编码规则即为每个字母都有其对应的ASCII码,基于编码规则将下载路径中包括的每个字母转换为ASCII码,并将其相加,得到最终的字符串。
步骤402,从n个堡垒服务器中选择与字符串对应的目标堡垒服务器,n为大于1的整数。
在一个示例中,通过如下方式确定目标堡垒服务器:
1、基于堡垒服务器的个数n,对字符串取余处理,得到余数;
2、将n个堡垒服务器中与余数对应的堡垒服务器,确定为目标堡垒服务器。
示例性地,预先对n个堡垒服务器进行编号,假设存在3个堡垒服务器,则可以将其编号为0、1、2。假设第三方包的下载路径对应的字符串为15,对15除以3,取余数0,则将编号为0的堡垒服务器确定为目标堡垒服务器。
步骤403,调用离线下载接口向目标堡垒服务器发送第三方包的下载请求。
当从n个堡垒服务器中确定出目标堡垒服务器后,代码编译框架向目标堡垒服务器发送该第三方包的下载请求,从而使得目标堡垒服务器基于该下载请求从网络服务器中下载该第三方包。
综上所述,本申请实施例提供的技术方案中,通过下载路径对应的字符串,确定向哪个堡垒服务器发送第三方包的下载请求,可以合理分配堡垒服务器,相较于使用一个堡垒服务器下载第三方包,减轻了存储压力。
如图5所示,本申请实施例提供了另一种下载请求发送方法的流程图。该方法可以包括以下几个步骤:
步骤501,依次向n个堡垒服务器发送第三方包的获取请求。
在本申请实施例中,获取请求用于请求从堡垒服务器中获取第三方包,n为大于1的整数。代码编译框架依次向n个堡垒服务器发送第三方包的获取请求,若n个堡垒服务器中存在某个或某些堡垒服务器的本地存储有第三方包,则代码编译框架可以直接从上述堡垒服务器中获取到该第三方包,因而不需要再发送下载请求了。
步骤502,若接收到n个堡垒服务器发送的获取失败响应,则从n个堡垒服务器中选择目标堡垒服务器。
在本申请实施例中,获取失败响应是在堡垒服务器的本地未存储有第三方包的情况下发送的。示例性地,若代码编译框架接收到n个堡垒服务器发送的获取失败响应,则表明n个堡垒服务器中都未存储有第三方包,代码编译框架可以从n个堡垒服务器中随机选择一个堡垒服务器,将其确定为目标堡垒服务器。
步骤503,调用离线下载接口向目标堡垒服务器发送第三方包的下载请求。
综上所述,本申请实施例提供的技术方案中,代码编译框架先向n个堡垒服务器发送第三方包的获取请求,在n个堡垒服务器中都未存储有第三方包的情况下,再向目标堡垒服务器发送下载请求,可以减轻堡垒服务器的计算压力,降低堡垒服务器和网络服务器之间的处理开销。
请参考图6,其示出了本申请另一个实施例提供的代码编译方法的流程图,本申请实施例应用于如图2所示的堡垒服务器21中,堡垒服务器21是用于访问互联网中的网络服务器的内网服务器,所述方法包括以下几个步骤:
步骤601,接收代码编译框架发送的第三方包的下载请求。
在本申请实施例中,第三方包是指由第三方开发的用于代码编译的开源包。第三方包可以是源码、可执行文件或二进制库等形式的文件。下载请求包括第三方包的下载路径。示例性地,下载路径可以是url(uniform resource locator,统一资源定位符),用于表征第三方包的下载位置。
步骤602,基于下载路径,从网络服务器中下载第三方包。
堡垒服务器接收到下载请求之后,可以基于下载路径,从网络服务器中下载第三方包。
步骤603,将第三方包发送给代码编译框架,代码编译框架用于通过第三方包对待编译源码进行编译。
堡垒服务器下载完第三方包之后,可以将第三方包发送给代码编译框架,以使得代码编译框架对待编译源码进行编译。
综上所述,本申请实施例提供的技术方案中,通过将第三方包的下载请求发送给堡垒服务器,由堡垒服务器基于下载请求从互联网中的网络服务器中下载第三方包,避免了代码编译框架直接从网络服务器中下载第三方包,降低了代码编译框架的安全性受到威胁的概率。
示例性地,如图7所示,本申请实施例提供了又一个实施例提供的代码编译方法的流程图,本申请实施例的执行主体可以是堡垒服务器。所述方法包括以下几个步骤:
步骤701,接收代码编译框架发送的第三方包的下载请求。
第三方包是指由第三方开发的用于代码编译的开源包,下载请求包括第三方包的下载路径。
步骤702,检测堡垒服务器本地是否存储有第三方包;若是,则执行步骤703;若否,则从步骤704开始执行。
步骤703,将堡垒服务器本地存储的第三方包发送给代码编译框架。
堡垒服务器检测到本地存储有第三方包,可以直接将本地存储的第三方包发送给代码编译框架,而不需要再基于下载请求从网络服务器中下载,减轻了堡垒服务器和网络服务器之间的处理开销。
步骤704,基于下载路径,从网络服务器中下载第三方包。
堡垒服务器检测到本地未存储有第三方包,可以基于下载路径,从网络服务器中下载第三方包,并存储在本地。
步骤705,对第三方包进行安全检查。
在本申请实施例中,安全检查包括以下至少一项:病毒检查、合法性检查。也即,堡垒服务器可以对第三方包进行病毒检查,或者,堡垒服务器可以对第三方包进行合法性检查,或者,堡垒服务器可以对第三方包既进行病毒检查又进行合法性检查。对第三方包进行病毒检查是为了避免第三方包携带病毒从而影响代码编译框架的正常运行。对第三方包进行合法性检查是为了防止第三方包非法从而危害代码编译框架的安全性。
步骤706,若第三方包通过安全检查,则将第三方包发送给代码编译框架。
当第三方包通过安全检查后,可以将安全的第三方包发送给代码编译框架,保证了代码编译框架的正常运行。
可选地,若第三方包超过预设时长未被使用,则删除堡垒服务器本地存储的第三方包。当第三方包超过预设时长未被使用时,表明该第三方包的使用频率较低,为了降低堡垒服务器的存储压力,可以删除该第三方包。
综上所述,本申请实施例提供的技术方案中,通过先检查堡垒服务器本地是否存储有第三方包,若本地存储有第三方包,则可以直接将本地存储的第三方包发送给代码编译框架,降低了堡垒服务器和网络服务器之间的处理开销。
另外,先对下载完的第三方包进行安全检查,当第三方包通过安全检查时,再将该第三方包发送给代码编译框架,保证了代码编译框架的安全性。
请参考图8,其示出了本申请又一个实施例提供的代码编译方法的流程图。
该方法包括以下几个步骤:
步骤801,代码编译框架获取待编译源码对应的第三方包的下载路径。
在本申请实施例中,第三方包是指由第三方提供的用于对待编译源码进行编译的开源包。
步骤802,代码编译框架调用离线下载接口向堡垒服务器发送第三方包的下载请求。
堡垒服务器是用于访问互联网中的网络服务器的内网服务器,下载请求包括第三方包的下载路径。
步骤803,堡垒服务器检测堡垒服务器本地是否存储有第三方包;若是,则执行步骤804;若否,则从步骤805开始执行。
步骤804,堡垒服务器将堡垒服务器本地存储的第三方包发送给代码编译框架。
步骤805,堡垒服务器基于下载路径,从网络服务器中下载第三方包。
步骤806,堡垒服务器对第三方包进行安全检查。
在本申请实施例中,安全检查包括以下至少一项:病毒检查、合法性检查。
步骤807,若第三方包通过安全检查,则将第三方包发送给代码编译框架。
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
本申请一示例性实施例提供了一种代码编译装置,能够实现本申请实施例提供的上述方法。该装置包括:处理器,以及用于存储处理器的可执行指令的存储器。其中,处理器被配置为:
获取待编译源码对应的第三方包的下载路径,所述第三方包是指由第三方提供的用于对所述待编译源码进行编译的开源包;
调用离线下载接口向堡垒服务器发送所述第三方包的下载请求,所述堡垒服务器是用于访问互联网中的网络服务器的内网服务器,所述下载请求包括所述第三方包的下载路径;
接收所述堡垒服务器基于所述下载请求从所述网络服务器中下载到的所述第三方包;
通过所述第三方包对所述待编译源码进行编译。
可选地,所述处理器被配置为:
将所述第三方包的下载路径转化为字符串;
从n个所述堡垒服务器中选择与所述字符串对应的目标堡垒服务器,所述n为大于1的整数;
调用所述离线下载接口向所述目标堡垒服务器发送所述第三方包的下载请求。
可选地,所述处理器被配置为:
基于所述堡垒服务器的个数n,对所述字符串取余处理,得到余数;
将n个所述堡垒服务器中与所述余数对应的堡垒服务器,确定为所述目标堡垒服务器。
可选地,所述处理器被配置为:
对所述第三方包的下载路径做哈希处理,得到所述字符串;
或者,
对所述第三方包的下载路径基于编码规则进行转化,得到所述字符串。
可选地,所述处理器还被配置为:
依次向n个所述堡垒服务器发送所述第三方包的获取请求,所述获取请求用于请求从所述堡垒服务器中获取所述第三方包,所述n为大于1的整数;
若接收到所述n个堡垒服务器发送的获取失败响应,则从n个所述堡垒服务器中选择目标堡垒服务器;其中,所述获取失败响应是在所述堡垒服务器的本地未存储有所述第三方包的情况下发送的;
所述调用离线下载接口向堡垒服务器发送所述第三方包的下载请求,包括:
调用所述离线下载接口向所述目标堡垒服务器发送所述第三方包的下载请求。
本申请另一示例性实施例提供了一种代码编译装置,能够实现本申请实施例提供的上述方法。该装置包括:处理器,以及用于存储处理器的可执行指令的存储器。其中,处理器被配置为:
接收代码编译框架发送的第三方包的下载请求,所述第三方包是指由第三方开发的用于代码编译的开源包,所述下载请求包括所述第三方包的下载路径;
基于所述下载路径,从网络服务器中下载所述第三方包;
将所述第三方包发送给所述代码编译框架,所述代码编译框架用于通过所述第三方包对待编译源码进行编译。
可选地,所述处理器,还被配置为:
对所述第三方包进行安全检查,所述安全检查包括以下至少一项:病毒检查、合法性检查;
若所述第三方包通过所述安全检查,则执行所述将所述第三方包发送给所述代码编译框架的步骤。
可选地,所述处理器,还被配置为:
若所述第三方包超过预设时长未被使用,则删除所述堡垒服务器本地存储的所述第三方包。
可选地,所述处理器,还被配置为:
检测堡垒服务器本地是否存储有所述第三方包;
若所述堡垒服务器本地未存储有所述第三方包,则执行所述基于所述下载路径,从网络服务器中下载所述第三方包的步骤;
若所述堡垒服务器本地存储有所述第三方包,则将所述堡垒服务器本地存储的所述第三方包发送给所述代码编译框架。
请参考图9,其示出了本申请一个实施例提供的计算机设备的结构框图。该计算机设备可以是上文所述的代码编译框架或堡垒服务器。
本申请实施例中的计算机设备可以包括一个或多个如下部件:处理器910和存储器920。
处理器910可以包括一个或者多个处理核心。处理器910利用各种接口和线路连接整个计算机设备内的各个部分,通过运行或执行存储在存储器920内的指令、程序、代码集或指令集,以及调用存储在存储器920内的数据,执行计算机设备的各种功能和处理数据。可选地,处理器910可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(ProgrammableLogic Array,PLA)中的至少一种硬件形式来实现。处理器910可集成中央处理器(CentralProcessing Unit,CPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统和应用程序等;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器910中,单独通过一块芯片进行实现。
可选地,处理器910执行存储器920中的程序指令时实现上述各个方法实施例提供的方法。
存储器920可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory)。可选地,该存储器920包括非瞬时性计算机可读介质(non-transitory computer-readable storage medium)。存储器920可用于存储指令、程序、代码、代码集或指令集。存储器920可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于至少一个功能的指令、用于实现上述各个方法实施例的指令等;存储数据区可存储根据计算机设备的使用所创建的数据等。
上述计算机设备的结构仅是示意性的,在实际实现时,计算机设备可以包括更多或更少的组件,比如:显示屏等,本实施例对此不作限定。
本领域技术人员可以理解,图9中示出的结构并不构成对计算机设备的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
在示例性实施例中,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序由计算机设备的处理器加载并执行以实现上述方法实施例中的各个步骤。
在示例性实施例中,还提供了一种计算机程序产品,当该计算机程序产品被执行时,其用于实现上述方法。
以上所述仅为本申请的示例性实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。