CN110673853B - 一种编译方法、装置及系统 - Google Patents

一种编译方法、装置及系统 Download PDF

Info

Publication number
CN110673853B
CN110673853B CN201910908789.3A CN201910908789A CN110673853B CN 110673853 B CN110673853 B CN 110673853B CN 201910908789 A CN201910908789 A CN 201910908789A CN 110673853 B CN110673853 B CN 110673853B
Authority
CN
China
Prior art keywords
compiling
module
compiled
mirror image
application data
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.)
Active
Application number
CN201910908789.3A
Other languages
English (en)
Other versions
CN110673853A (zh
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.)
Industrial and Commercial Bank of China Ltd ICBC
Original Assignee
Industrial and Commercial Bank of China Ltd ICBC
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 Industrial and Commercial Bank of China Ltd ICBC filed Critical Industrial and Commercial Bank of China Ltd ICBC
Priority to CN201910908789.3A priority Critical patent/CN110673853B/zh
Publication of CN110673853A publication Critical patent/CN110673853A/zh
Application granted granted Critical
Publication of CN110673853B publication Critical patent/CN110673853B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/61Installation
    • G06F8/63Image based installation; Cloning; Build to order

Landscapes

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

Abstract

本说明书实施例公开了一种编译方法、装置及系统,所述方法应用于编译系统,所述系统包括标准镜像仓库、构建机以及版本库,标准镜像仓库中设置有编译镜像组件,版本库中设置有待编译应用数据,待编译应用数据包括多个编译模块,构建机执行下述方式实现对待编译应用数据的编译:获取编译描述文件;解析编译描述文件,获得编译模块对应的编译模块标识、源码路径数据以及组件标识;根据源码路径数据以及编译模块标识获取待编译应用数据的编译模块;根据获取的编译模块对应的组件标识调取编译镜像组件;利用调取的编译镜像组件对获取的编译模块进行编译处理,获得编译结果。利用本说明书各个实施例,可以提高编译效率,降低编译复杂性以及工作成本。

Description

一种编译方法、装置及系统
技术领域
本发明涉及计算机数据处理技术领域,特别地,涉及一种编译方法、装置及系统。
背景技术
在传统持续集成领域,版本包构建脚本通常使用ant脚本进行编译、shell脚本对文件打包等操作。传统的构建脚本的编写和维护经常需要用户手工来进行。但是由于构建脚本编写没有统一的标准和规范、用户编码风格不统一、构建类型种类多、构建脚本编写复杂等原因,给用户编写构建脚本带来了巨大困扰,使得编写出来的构建脚本难以理解、无法重复利用且扩展性差,导致人力维护构建脚本的成本过高。如何标准化构建脚本的编写,节省人力维护成本,提升构建效率成为亟需解决的问题。
发明内容
本说明书实施例的目的在于提供一种编译方法、装置及系统,可以提高编译效率,降低编译复杂性以及工作成本。
本说明书提供一种编译方法、装置及系统是包括如下方式实现的:
一种编译方法,应用于编译系统,所述系统包括标准镜像仓库、构建机以及版本库,所述标准镜像仓库中设置有编译镜像组件,所述版本库中设置有待编译应用数据,所述待编译应用数据包括多个编译模块,所述构建机执行至少下述方式实现对所述待编译应用数据的编译:
获取所述待编译应用数据的编译描述文件;
解析所述编译描述文件,获得编译模块对应的编译模块标识、源码路径数据以及编译镜像组件的组件标识;
根据所述源码路径数据以及编译模块标识从所述版本库中获取所述待编译应用数据的编译模块;
根据获取的编译模块对应的组件标识从所述标准镜像仓库中调取编译镜像组件;
利用调取的编译镜像组件对所述获取的编译模块进行编译处理,获得编译结果。
本说明书所述的方法提供的另一个实施例中,所述解析所述编译描述文件之后,还包括:获得编译运行步骤,所述编译运行步骤包括编译模块之间的编译依赖关系。
本说明书所述的方法提供的另一个实施例中,所述方法还包括:
对不存在编译依赖关系的编译模块在所述构建机上进行并行编译处理,对存在编译依赖关系的编译模块在所述构建机上基于所述编译依赖关系进行编译处理。
本说明书所述的方法提供的另一个实施例中,所述待编译应用数据为待编译应用版本更新后的增量源程序数据;
所述调取编译镜像组件之前,还包括:
判断所述编译模块是否为空,如果不为空,则根据所述编译模块对应的组件标识从所述标准镜像仓库中调取编译镜像组件;如果为空,则跳过该编译模块。
本说明书所述的方法提供的另一个实施例中,所述利用调取的编译镜像组件对所述获取的编译模块进行编译处理,包括:
运行调取的编译镜像组件以启动容器,在所述容器内利用调取的编译镜像组件对所述编译模块进行编译处理,当调取的编译镜像组件编译处理完成后,销毁容器。
本说明书所述的方法提供的另一个实施例中,所述编译描述文件还包括编译镜像组件的编译运行参数数据;
所述利用调取的编译镜像组件对所述获取的编译模块进行编译处理,包括:
利用调取的编译镜像组件以及所述调取的编译组件的编译运行参数数据对所述获取的编译模块进行编译处理。
本说明书所述的方法提供的另一个实施例中,所述方法还包括:
当判断完成所述编译运行步骤后,将各编译模块的编译结果进行打包处理,获得所述待编译应用数据的版本包。
本说明书所述的方法提供的另一个实施例中,所述编译镜像组件包括MAVEN镜像、NODEJS镜像、DB镜像、WAS镜像、JAVA镜像、COPY镜像、PAAS镜像、PYTHON镜像、LIBERTY镜像、CHECK镜像、GO镜像中的一种或多种。
本说明书实施例还提供一种编译方法,所述方法包括:
获取待编译应用数据的编译描述文件,所述待编译应用数据包括多个编译模块;
解析所述编译描述文件,获得编译模块对应的编译模块标识、源码路径数据以及编译镜像组件的组件标识;
根据所述源码路径数据以及编译模块标识获取所述待编译应用数据的编译模块;
根据获取的编译模块对应的组件标识调取编译镜像组件;
利用调取的编译镜像组件对所述获取的编译模块进行编译处理,获得编译结果。
本说明书实施例还提供一种编译装置,包括:
数据获取模块,用于获取待编译应用数据的编译描述文件,所述待编译应用数据包括多个编译模块;
数据解析模块,用于解析所述编译描述文件,获得编译模块对应的编译模块标识、源码路径数据以及编译镜像组件的组件标识;
源程序获取模块,用于根据所述源码路径数据以及编译模块标识获取所述待编译应用数据的编译模块;
编译镜像调取模块,用于根据获取的编译模块对应的组件标识调取编译镜像组件;
编译处理模块,用于利用调取的编译镜像组件对所述获取的编译模块进行编译处理,获得编译结果。
本说明书实施例还提供一种编译设备,包括处理器及用于存储处理器可执行指令的存储器,所述指令被所述处理器执行时实现包括以下步骤:
获取待编译应用数据的编译描述文件,所述待编译应用数据包括多个编译模块;
解析所述编译描述文件,获得编译模块对应的编译模块标识、源码路径数据以及编译镜像组件的组件标识;
根据所述源码路径数据以及编译模块标识获取所述待编译应用数据的编译模块;
根据获取的编译模块对应的组件标识调取编译镜像组件;
利用调取的编译镜像组件对所述获取的编译模块进行编译处理,获得编译结果。
本说明书实施例还提供一种编译系统,所述系统包括标准镜像仓库、构建机以及版本库,所述标准镜像仓库中设置有编译镜像组件,所述版本库中设置有待编译应用数据以及所述待编译应用数据的编译描述文件,所述待编译应用数据包括多个编译模块;
所述构建机根据构建请求所述版本库中获取所述编译描述文件,所述构建请求包括所述待编译应用数据的标识信息;
所述构建机解析所述编译描述文件,解析所述编译描述文件,获得编译模块对应的编译模块标识、源码路径数据以及编译镜像组件的组件标识;
所述构建机根据所述源码路径数据以及编译模块标识从所述版本库中获取所述待编译应用数据的编译模块;
所述构建机根据获取的编译模块对应的组件标识从所述标准镜像仓库中调取编译镜像组件;
所述构建机利用调取的编译镜像组件对所述获取的编译模块进行编译处理,获得编译结果。
本说明书一个或多个实施例提供的编译方法、装置及系统,可以通过预先配置编译镜像组件,利用编译镜像组件来实现对待编译应用数据的编译处理。同时,还可以将待编译应用数据划分成多个编译模块,并预先配置各编译模块编译处理所需的具体编译镜像组件以及各编译镜像组件之间的编译依赖关系,基于预先配置的数据对各编译模块分别编译处理。利用本说明书各个实施例,可以将应用编译过程进行模块化拆分,实现自由组装构建过程,提高编译效率;同时,用户无需再重复编写繁琐复杂的构建脚本,可以降低编译复杂性以及工作成本。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1为本说明书提供的一种编译系统实施例的模块结构示意图;
图2为本说明书提供的一个实施例中的标准镜像仓库的模块结构示意图;
图3为本说明书提供的一种编译方法实施例的流程示意图;
图4为本说明书提供的另一种编译方法实施例的流程示意图;
图5为本说明书提供的一种编译装置实施例的模块结构示意图;
图6为根据本说明书的一个示例性实施例的服务器的示意结构图。
具体实施方式
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书一个或多个实施例中的附图,对本说明书一个或多个实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是说明书一部分实施例,而不是全部的实施例。基于说明书一个或多个实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书实施例方案保护的范围。
图1表示本说明书实施例提供的编译系统的模块结构示意图。如图1所示,本说明书实施例提供的编译系统可以包括标准镜像仓库、构建机以及版本库。所述标准镜像仓库可以为存储有编译镜像组件的镜像仓库,如可以为docker镜像仓库。所述构建机可以包括执行编译处理的服务器或者服务器集群。所述版本库可以包括存储应用的源程序数据的数据库。
一些实施例中,所述标准镜像仓库中可以存储有预先配置的一种或者多种编译镜像组件。所述编译镜像组件可以包括为实现特定的编译构建需要而封装的运行程序数据。图2表示本说明书一个实施例提供的标准镜像仓库的模块结构示意图。如图2所示,所述编译镜像组件可以包括MAVEN镜像、NODEJS镜像、DB镜像、WAS镜像、JAVA镜像、COPY镜像、PAAS镜像、PYTHON镜像、LIBERTY镜像、CHECK镜像、GO镜像。其中,各编译镜像组件可以支持的功能如下:
MAVEN镜像:支持MAVEN工程编译;
NODEJS镜像:支持NODEJS工程编译;
DB镜像:数据库脚本的打包编译;
WAS镜像:支持WAS工程编译;
JAVA镜像:支持JAVA工程编译;
COPY镜像:支持文件拷贝;
PAAS镜像:支持DOCKER镜像构建;
PYTHON镜像:支持PYTHON工程编译;
LIBERTY镜像:支持LIBERTY工程编译;
CHECK镜像:支持文件过滤;
GO镜像:支持GO工程编译。
所述版本库可以包括待编译应用数据,所述待编译应用数据可以包括应用的待编译源程序数据。开发人员可以根据构建需求编写应用的源程序数据,然后,可以将编写的源程序数据上传至版本库中进行保存。
所述待编译应用数据的编译处理可以基于编译描述文件进行。所述编译描述文件可以为编译运行的配置文件,用户可以根据自己编译的需要配置编译描述文件中的参数数据。所述编译描述文件如可以采用yaml格式配置文件,编写更敏捷、内容更易读、数据可解析、扩展更容易。当然,也可以采用其他格式的配置文件,这里不做限定。
本说明书的一个或者多个实施例中,所述编译描述文件中可以配置有编译模块标识、源程序路径数据、编译运行步骤、编译运行参数等中的一种或者多种。
可以将待编译应用数据根据节点进行划分,获得多个编译模块。一个应用可以划分为多个节点,各节点数据可以独立的进行编译处理,节点可以根据应用自身的架构进行设置,如可以根据应用需要用到的编译工程类型确定的。可以在版本库中根据节点将待编译应用数据划分为多个模块,获得多个编译模块。在配置编译描述文件时,可以将整个应用的编译处理过程,配置成多个编译模块的形式。编译描述文件中可以对应有编译模块标识,以对各编译模块的源程序数据、编译运行步骤进行区分,实现各编译模块的单独编译处理。
所述源程序路径数据可以为待编译应用数据的存储路径数据,可以根据源程序路径数据从版本库中一次性获取应用的各编译模块。另一些实施方式中,所述源程序路径数据还可以包括各编译模块的存储路径数据,也可以根据源程序路径数据分别从版本库中获取各编译模块。
所述编译描述文件还可以支持编译步骤的配置以及编排,开发人员可以根据待编译应用的编译处理逻辑运行关系以及运行环境等,预先在编译描述文件中编辑编译运行步骤。应用的编译处理可以通过利用预先配置好的编译镜像组件来实现,再通过对编译组件的编译结果进行打包处理,获得应用的版本包。
可以在编译描述文件中配置编译模块所需的具体编译镜像组件的组件标识、编译镜像组件之间的依赖关系等。编译处理时,可以基于编译描述文件中的配置信息实现对各编译模块的编译处理。用户可以通过填写build.yml文件,定义各编译模块编译处理过程中所需要用到的镜像组件类型,比如MAVEN镜像、NODEJS镜像、DB镜像等等,并通过配置编译步骤确定各编译镜像组件之间的依赖关系。
所述编译描述文件还可以包括编译运行参数数据,所述编译运行参数数据可以包括各编译镜像组件在对该待编译应用进行编译时所需用到的参数数据,可以由开发人员根据需要自行预先配置。
所述构建机可以为单个的编译构建服务器,也可以为服务器集群。本说明书的一个实施例中,所述构建机可以为分布式服务器集群,所述构建机可以包括分布式、负载均衡以及资源动态分配与回收运行机制。
所述构建机可以为分布式集群,具有多个构建节点,每个构建节点均可以独立支持构建。构建机可以同时处理多个构建请求,可以通过负责均衡策略将构建请求分配给每个构建节点触发构建。所述多个构建请求可以为一个待编译应用数据的多个编译模块所对应的构建请求,也可以为多个待编译应用数据所对应的构建请求。
基于编译模块的方式进行编译处理,各编译模块之间的编译处理可以独立运行,构建机不论是在处理单个应用的各编译模块的编译处理,还是多个应用的编译模块的编译处理时,均不会互相产生影响,从而可以实现应用编译的并发处理,大幅提高编译处理的效率。
构建机可以配置有固定的构建资源池,可以支持按需分配与回收。每个构建节点在收到负载均衡分配的构建请求后,可以分配构建资源,启动容器,开始构建,等容器完成构建工作后,可以自动销毁容器,完成构建资源的回收,有效避免构建资源的浪费。
基于上述一个或者多个实施例所述的编译系统,本说明书实施例还提供下述编译方法。虽然本说明书提供了如下述实施例或附图所示的方法操作步骤或装置结构,但基于常规或者无需创造性的劳动在所述方法或装置中可以包括更多或者部分合并后更少的操作步骤或模块单元。在逻辑性上不存在必要因果关系的步骤或结构中,这些步骤的执行顺序或装置的模块结构不限于本说明书实施例或附图所示的执行顺序或模块结构。所述的方法或模块结构的在实际中的装置、服务器或终端产品应用时,可以按照实施例或者附图所示的方法或模块结构进行顺序执行或者并行执行(例如并行处理器或者多线程处理的环境、甚至包括分布式处理、服务器集群的实施环境)。图3表示本说明书提供的所述编译方法的一个实施例的流程示意图。如图3所示,本说明书提供的所述编译方法的一个实施例中,所述方法可以包括:
S0:获取所述待编译应用数据的编译描述文件。
用户可以发起构建请求,构建机可以基于构建请求开启对待编译应用数据的编译处理。一些实施方式中,所述构建请求中可以包括待编译应用数据的标识信息,构建机可以根据标识信息获取编译描述文件。
一些实施例中,所述编译描述文件可以存储于所述版本库中,用户编写完成编译描述文件后,可以将编译描述文件上传至版本库中存储。并可以利用待编译应用数据的标识信息进行标识后存储,以便于编译处理时调用。构建机可以根据用户发起的构建请求中的标识信息从版本库中获取待编译应用数据的编译描述文件。
S2:解析所述编译描述文件,获得,获得编译模块对应的编译模块标识、源码路径数据以及编译镜像组件的组件标识。
构建机可以解析所述编译描述文件,获取编译描述文件中的配置信息,以基于所述配置信息获取待编译应用数据,以及对该编译应用数据进行编译处理。
一些实施例中,所述版本库中还可以存储有编译辅助脚本数据。所述编译辅助脚本数据可以包括编译描述文件解析脚本、镜像启动脚本、统一打包脚本等。所述编译描述文件解析脚本可以用于解析编译描述文件。所述镜像启动脚本可以用于根据编译描述文件解析脚本解析获得的配置信息启动相应的编译镜像组件运行。所述统一打包脚本可以用于将最终的编译结果统一打包处理,获得版本包。
构建机可以从版本库中获取编译描述文件解析脚本,然后,可以运行编译描述文件解析脚本以对编译描述文件进行解析,获得编译模块标识、源码路径数据以及编译运行步骤。
所述编译描述文件中可以配置有各编译模块所对应的编译模块标识、源码路径数据以及编译镜像组件的组件标识等数据。所述源码路径数据可以用于从版本库中获取待编译的源程序数据。所述编译模块标识可以用于对各编译模块的数据进行标识。所述组件标识可以用于标识编译模块编译处理时所需要用到的编译镜像组件。
编译镜像组件可以预先配置于标准镜像仓库中,用于执行特定功能的编译处理。源程序数据的编译处理可以通过调用编译镜像组件,通过编译镜像组件来实现。对一个编译模块,可以先在编译描述文件中预先配置对该编译模块编译时所对应的编译镜像组件的组件标识,编译处理过程中,则可以解释编译描述文件,获得该编译模块所对应的组件标识,利用组件标识从标准镜像仓库中调取该组件标识所对应的编译镜像组件,利用调取的编译模块对该编译模块进行编译处理。
S4:根据所述源码路径数据以及编译模块标识从所述版本库中获取所述待编译应用数据的编译模块。
应用的源程序数据在版本库中可以根据编译模块分别进行存储。一些实施方式中,所述源码路径数据可以包括待编译应用数据的存储位置数据,可以基于源码路径数据将待编译应用数据从版本库中一次性全部获取,然后,可以根据编译模块标识从获取到的待编译应用数据中获取相应编译模块所对应的源程序数据。另一些实施方式中,所述源码路径数据还可以包括各编译模块在版本库中的存储地址,可以根据源码路径数据分别版本库中获取各编译模块的源程序数据。本说明书一个或者多个实施例中,优选采用将待编译应用的待编译源程序数据从版本库中一次性全部拉取的方式,减少拉取步骤,便于及时处理。
S6:根据获取的编译模块对应的组件标识从所述标准镜像仓库中调取编译镜像组件。
对于某编译模块,可以将编译步骤中组件标识发送给镜像启动脚本,镜像启动脚本可以根据组件标识从标准镜像仓库中调取相应的编译镜像组件。一些实施方式中,可以根据执行需要调取编译镜像组件,在需要运行某编译镜像组件时,再调取该编译镜像组件。另一些实施方式中,也可以一次性从标准镜像仓库中调取待编译应用数据所需的全部编译镜像组件,进行本地缓存,避免重复执行调取步骤,然后,当需要运行某编译镜像组件时,直接根据组件标识运行相应的编译镜像组件即可。
S8:利用调取的编译镜像组件对所述获取的编译模块进行编译处理,获得编译结果。
构建机调取编译模块对应的编译镜像组件后,可以利用该编译镜像组件对编译模块进行编译处理。编译模块根据应用的架构划分,一个编译模块通常对应一个编译镜像组件,利用编译镜像组件对相应的编译模块编译处理完成后,可以获得该编译模块的编译结果,可以将该编译结果存储至构建机的存储介质中。对待编译应用数据的各编译模块分别进行上述处理后,可以获得各编译模块所对应的编译结果。
本说明书的另一些实施例中,对各编译模块还可以采用下述方式进行编译处理:运行调取的编译镜像组件以启动容器,在所述容器内利用调取的编译镜像组件对所述编译模块进行编译处理,当调取的编译镜像组件编译处理完成后,销毁容器。
构建机可以配置有资源动态分配与回收机制。构建机可以配置有固定的构建资源池,可以支持按需分配与回收。运行编译镜像组件后,构建节点可以根据需要分配构建资源,启动容器,开始编译处理,等容器内的编译处理完成后,可以将编译结果储存至构建机的存储介质中,然后,容器可以自动销毁,完成构建资源的回收,有效避免构建资源的浪费。等编译下一个编译模块时,构建节点可以重新根据需要分配构建资源,启动容器对相应的编译模块进行编译处理。
所述容器可以为根据编译处理机制分配的运行资源,容器内编译处理可以独立运行,不受服务器其他数据运行的干扰。通过利用容器的方式进行各编译镜像组件的编译处理,可以有效利用构建资源,防止资源浪费。
本说明书的另一个实施例中,所述编译描述文件中还可以包括编译镜像组件的编译运行参数数据;可以利用调取的编译镜像组件以及所述调取的编译组件的编译运行参数数据对编译模块进行编译处理。可以预先在编译描述文件中配置各编译镜像组件的编译运行参数数据,运行编译镜像组件可以基于编译描述文件的编译运行参数数据对编译模块进行编译处理。通过在编译描述文件中预先配置各编译镜像组件的参数数据,可以进一步提高编译处理的效率。
本说明书的另一个实施例中,所述编译步骤还可以包括编译运行步骤,所述编译运行步骤可以包括编译模块之间的编译依赖关系。利用编译镜像组件对源程序数据进行编译处理时,一个编译模块的处理可能需要依赖于另一个或者多个编译模块的处理结果,各编译模块可能对其他编译模块处理结果存在依赖关系。可以将该依赖关系称之为编译模块之间的编译依赖关系。
可以基于编译步骤在构建机中依次对各编译模块进行编译处理。本说明书的另一些实施例中,还可以基于在编译步骤中预先配置的编译依赖关系,对不存在编译依赖关系的编译模块在所述构建机上进行并行编译处理,对存在编译依赖关系的编译模块在所述构建机上基于所述编译依赖关系进行编译处理。
通过基于编译依赖关系可以确定哪些编译模块之间没有结果依赖,对这些没有结果依赖的编译模块可以根据构建机的资源配置进行编译运行处理,从而可以大幅度提高对构建机资源的利用,提高编译处理的效率以及灵活性。对有结果依赖的编译模块按编译依赖关系进行编译处理,可以进一步保证编译结果处理的准确性。
例如,maven编译镜像组件编译后的产物需要制作成镜像,就需要用到paas编译镜像组件;则整个编译过程中paas编译镜像组件的编译就需要依赖maven编译镜像组件先完成编译,基于maven编译镜像组件的编译结果,再进行下一步的编译处理。paas编译镜像组件可以通过轮询的方式查询maven编译镜像组件是否完成编译,当确定maven编译镜像组件完成编译处理且编译结果满足要求时,paas编译镜像组件再基于maven编译镜像组件的编译结果进行接下来的编译处理。如果maven编译镜像组件的编译结果不满足要求,paas编译镜像组件则可以报错。通过上述方式,可以进一步保证编译结果处理的准确性。
一些实施例中,所述构建机可以为分布式服务器集群。构建机获取各编译模块后,可以先分析编译模块之间的编译依赖关系,如果两个或者两个以上的编译模块之间存在编译依赖关系,则根据编译依赖关系确定各编译模块之间的编译处理先后顺序,在前一个编译模块处理结束后,后一编译模块再进行编译处理。对于不存在编译依赖关系的编译模块,则可以分配至不同的分布式节点进行并行编译处理。将待编译应用数据配置成多个编译模块,并利用并行处理的方式来实现应用的编译处理,可以大幅提高编译处理的效率。
本说明书的另一个或者多个实施例中,所述方法还可以包括:
S10:当判断完成所述编译描述文件中的编译运行步骤后,将各编译模块的编译结果进行打包处理,获得所述待编译应用数据的版本包。
当确定完成编译描述文件中的所有编译步骤后,可以利用统一打包脚本将该待编译应用所对应的所有编译结果进行打包处理,获得待编译应用数据的版本包。
本说明书上述实施例中提供的编译描述文件具有可支持重复使用的特点,无需每次都从头重新编写。开发人员可以在之前已经编写好的编译描述文件的基础上,进行修改完善,以获得本次需要的编译描述文件。同时,根据应用的节点将编译处理划分成多个编译模块进行编译处理,并基于编译描述文件来预先配置各编译模块的依赖关系,可将应用编译过程进行模块化拆分,实现自由组装构建过程,提高编译效率。同时,用户无需再重复编写繁琐复杂的构建脚本,降低了编译复杂性以及工作成本。
本说明书的一个或者多个实施例中,当应用版本发生更新时,构建机从版本库中获取源程序数据时,可以仅获取更新后的源程序数据进行编译处理。相应的,所述待编译应用数据可以为待编译应用版本更新后的增量源程序数据。
当应用版本更新后,开发人员可以将待编译应用更新后的源程序数据上传至版本库中,更新后的源程序数据可以根据原有模块标识分别进行标识。同时,可以在所述版本库中建立基础标签,以区分已编译处理的源程序数据和新提交的增量源程序数据。构建机可以根据基础标签拉取新提交的增量源程序数据,然后,可以根据编译模块标识获取各编译模块的源程序数据。
本说明书的一个实施例中,所述调取编译镜像组件之前,还包括:判断所述编译模块是否为空,如果不为空,则根据所述编译模块对应的组件标识从所述标准镜像仓库中调取编译镜像组件;如果为空,则跳过该编译模块。
在对编译模块进行编译处理之前,可以先判断该编译模块是否为空,即所述编译模块中是否存在源程序数据。如果存在,在对该编译模块进行编译处理,如果不存在,则无需对该编译模块进行编译处理,可以直接跳过。对应用进行版本或者补丁更新时,通常并不需要对所有编译模块对应的源程序数据进行更新,相应的,从版本库中拉取下来的待编译应用数据中,未发生源程序数据更新的编译模块中则没有待编译处理的源程序数据。通过进一步对各编译模块中是否存在增量源程序数据进行判断,对没有发生源程序更新的编译模块无需在进行编译处理,可以有效避免无意义的编译处理,进一步提高编译处理的效率。
编译处理完成后,可以利用统一打包脚本获取增量源程序数据的编译结果以及所需的之前编译处理的编译结果,并对获取的编译结果进行统一打包处理,获得应用更新后的版本包。
图4表示本说明书提供的一种编译方法的流程图。如图4所示,本说明书提供一种编译方法,应用于构建机,所述方法可以包括:
S402:获取待编译应用数据的编译描述文件,所述待编译应用数据包括多个编译模块;
S404:解析所述编译描述文件,获得编译模块对应的编译模块标识、源码路径数据以及编译镜像组件的组件标识;
S406:根据所述源码路径数据以及编译模块标识获取所述待编译应用数据的编译模块;
S408:根据获取的编译模块对应的组件标识调取编译镜像组件;
S410:利用调取的编译镜像组件对所述获取的编译模块进行编译处理,获得编译结果。
具体的实施方案可以参考上述实施例实施,这里不做赘述。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。具体的可以参照前述相关处理相关实施例的描述,在此不做一一赘述。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本说明书一个或多个实施例提供的编译方法,可以通过预先配置编译镜像组件,利用编译镜像组件来实现对待编译应用数据的编译处理。同时,还可以将待编译应用数据划分成多个编译模块,并预先配置各编译模块编译处理所需的具体编译镜像组件以及各编译镜像组件之间的编译依赖关系,基于预先配置的数据对各编译模块分别编译处理。利用本说明书各个实施例,可以将应用编译过程进行模块化拆分,实现自由组装构建过程,提高编译效率;同时,用户无需再重复编写繁琐复杂的构建脚本,可以降低编译复杂性以及工作成本。
基于上述所述的编译方法,本说明书一个或多个实施例还提供一种编译装置。所述的装置可以包括使用了本说明书实施例所述方法的系统、软件(应用)、模块、组件、服务器等并结合必要的实施硬件的装置。具体的,图5表示说明书提供的一种编译装置实施例的模块结构示意图,如图5所示,本说明书提供的所述编译装置,应用于构建机,所述装置可以包括:
数据获取模块502,可以用于获取待编译应用数据的编译描述文件,所述待编译应用数据包括多个编译模块;
数据解析模块504,可以用于解析所述编译描述文件,获得编译模块对应的编译模块标识、源码路径数据以及编译镜像组件的组件标识;
源程序获取模块506,可以用于根据所述源码路径数据以及编译模块标识获取所述待编译应用数据的编译模块;
编译镜像调取模块508,可以用于根据获取的编译模块对应的组件标识调取编译镜像组件件;
编译处理模块510,可以用于利用调取的编译镜像组件对所述获取的编译模块进行编译处理,获得编译结果。
需要说明的,上述所述的装置根据方法实施例的描述还可以包括其他的实施方式。具体的实现方式可以参照相关方法实施例的描述,在此不作一一赘述。
本说明书一个或多个实施例提供的编译装置,可以通过预先配置编译镜像组件,利用编译镜像组件来实现对待编译应用数据的编译处理。同时,还可以将待编译应用数据划分成多个编译模块,并预先配置各编译模块编译处理所需的具体编译镜像组件以及各编译镜像组件之间的编译依赖关系,基于预先配置的数据对各编译模块分别编译处理。利用本说明书各个实施例,可以将应用编译过程进行模块化拆分,实现自由组装构建过程,提高编译效率;同时,用户无需再重复编写繁琐复杂的构建脚本,可以降低编译复杂性以及工作成本。
本说明书提供的上述实施例所述的方法或装置可以通过计算机程序实现业务逻辑并记录在存储介质上,所述的存储介质可以计算机读取并执行,实现本说明书实施例所描述方案的效果。因此,本说明书还提供一种编译设备,应用于构建机,包括处理器及存储处理器可执行指令的存储器,所述指令被所述处理器执行时实现包括以下步骤:
获取待编译应用数据的编译描述文件,所述待编译应用数据包括多个编译模块;
解析所述编译描述文件,获得编译模块对应的编译模块标识、源码路径数据以及编译镜像组件的组件标识;
根据所述源码路径数据以及编译模块标识获取所述待编译应用数据的编译模块;
根据获取的编译模块对应的组件标识调取编译镜像组件;
利用调取的编译镜像组件对所述获取的编译模块进行编译处理,获得编译结果。
本说明书实施例所提供的方法实施例可以在计算机终端、服务器或者类似的运算装置中执行。以运行在服务器上为例,图6是应用本说明书实施例的消息推送服务器的硬件结构框图。如图6所示,服务器100可以包括一个或多个(图中仅示出一个)处理器200(处理器200可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器300、以及用于通信功能的传输模块400。本领域普通技术人员可以理解,图6所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,服务器100还可包括比图6中所示更多或者更少的组件,例如还可以包括其他的处理硬件,如数据库或多级缓存、GPU,或者具有与图6所示不同的配置。
存储器300可用于存储应用软件的软件程序以及模块,如本发明实施例中的搜索方法对应的程序指令/模块,处理器200通过运行存储在存储器300内的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器300可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器300可进一步包括相对于处理器200远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输模块400用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端的通信供应商提供的无线网络。在一个实例中,传输模块400包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输模块400可以为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
所述存储介质可以包括用于存储信息的物理装置,通常是将信息数字化后再以利用电、磁或者光学等方式的媒体加以存储。所述存储介质有可以包括:利用电能方式存储信息的装置如,各式存储器,如RAM、ROM等;利用磁能方式存储信息的装置如,硬盘、软盘、磁带、磁芯存储器、磁泡存储器、U盘;利用光学方式存储信息的装置如,CD或DVD。当然,还有其他方式的可读存储介质,例如量子存储器、石墨烯存储器等等。
需要说明的,上述所述的设备根据方法实施例的描述还可以包括其他的实施方式。具体的实现方式可以参照相关方法实施例的描述,在此不作一一赘述。
上述实施例所述的编译设备,可以通过预先配置编译镜像组件,利用编译镜像组件来实现对待编译应用数据的编译处理。同时,还可以将待编译应用数据划分成多个编译模块,并预先配置各编译模块编译处理所需的具体编译镜像组件以及各编译镜像组件之间的编译依赖关系,基于预先配置的数据对各编译模块分别编译处理。利用本说明书各个实施例,可以将应用编译过程进行模块化拆分,实现自由组装构建过程,提高编译效率;同时,用户无需再重复编写繁琐复杂的构建脚本,可以降低编译复杂性以及工作成本。
本说明书还提供一种编译系统,所述系统可以为单独的编译系统,也可以应用在多种计算机数据处理系统中。所述的系统可以为单独的服务器,也可以包括使用了本说明书的一个或多个所述方法或一个或多个实施例装置的服务器集群、系统(包括分布式系统)、软件(应用)、实际操作装置、逻辑门电路装置、量子计算机等并结合必要的实施硬件的终端装置。所述编译系统可以包括至少一个处理器以及存储计算机可执行指令的存储器,所述处理器执行所述指令时实现上述任意一个或者多个实施例中所述方法的步骤。
本说明书的一个或者多个实施例中,所述编译系统可以包括标准镜像仓库、构建机以及版本库。所述标准镜像仓库中可以设置有编译镜像组件,所述版本库中可以设置有待编译应用数据以及所述待编译应用数据的编译描述文件,所述待编译应用数据可以包括多个编译模块。
所述构建机可以根据构建请求所述版本库中获取所述编译描述文件,所述构建请求可以包括所述待编译应用数据的标识信息;
所述构建机可以获得编译模块对应的编译模块标识、源码路径数据以及编译镜像组件的组件标识;
所述构建机可以根据所述源码路径数据以及编译模块标识从所述版本库中获取所述待编译应用数据的编译模块;
所述构建机可以根据获取的编译模块对应的组件标识从所述标准镜像仓库中调取编译镜像组件;
所述构建机可以利用调取的编译镜像组件对所述获取的编译模块进行编译处理,获得编译结果。
需要说明的,上述所述的系统根据方法或者装置实施例的描述还可以包括其他的实施方式,具体的实现方式可以参照相关方法实施例的描述,在此不作一一赘述。
上述实施例所述的编译系统,可以通过预先配置编译镜像组件,利用编译镜像组件来实现对待编译应用数据的编译处理。同时,还可以将待编译应用数据划分成多个编译模块,并预先配置各编译模块编译处理所需的具体编译镜像组件以及各编译镜像组件之间的编译依赖关系,基于预先配置的数据对各编译模块分别编译处理。利用本说明书各个实施例,可以将应用编译过程进行模块化拆分,实现自由组装构建过程,提高编译效率;同时,用户无需再重复编写繁琐复杂的构建脚本,可以降低编译复杂性以及工作成本。
需要说明的是,本说明书上述所述的装置或者系统根据相关方法实施例的描述还可以包括其他的实施方式,具体的实现方式可以参照方法实施例的描述,在此不作一一赘述。本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于硬件+程序类、存储介质+程序实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书实施例并不局限于必须是符合标准数据模型/模板或本说明书实施例所描述的情况。某些行业标准或者使用自定义方式或实施例描述的实施基础上略加修改后的实施方案也可以实现上述实施例相同、等同或相近、或变形后可预料的实施效果。应用这些修改或变形后的数据获取、存储、判断、处理方式等获取的实施例,仍然可以属于本说明书的可选实施方案范围之内。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、车载人机交互设备、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书一个或多个时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内部包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法或者设备中还存在另外的相同要素。
本领域技术人员应明白,本说明书一个或多个实施例可提供为方法、系统或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书一个或多个实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本本说明书一个或多个实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本说明书的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述并不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
以上所述仅为本说明书的实施例而已,并不用于限制本说明书。对于本领域技术人员来说,本说明书可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书的权利要求范围之内。

Claims (12)

1.一种编译方法,其特征在于,应用于编译系统,所述系统包括标准镜像仓库、构建机以及版本库,所述标准镜像仓库中设置有编译镜像组件,所述版本库中设置有待编译应用数据,所述待编译应用数据包括多个编译模块,所述待编译应用数据包括应用的待编译源程序数据,所述多个编译模块是根据节点对所述待编译应用数据进行划分得到的,所述构建机执行至少下述方式实现对所述待编译应用数据的编译:
获取所述待编译应用数据的编译描述文件;
解析所述编译描述文件,获得编译模块对应的编译模块标识、源码路径数据以及编译镜像组件的组件标识;
根据所述源码路径数据以及编译模块标识从所述版本库中获取所述待编译应用数据的编译模块;
根据获取的编译模块对应的组件标识从所述标准镜像仓库中调取编译镜像组件;
利用调取的编译镜像组件对所述获取的编译模块进行编译处理,获得编译结果。
2.根据权利要求1所述的方法,其特征在于,所述解析所述编译描述文件之后,还包括:获得编译运行步骤,所述编译运行步骤包括编译模块之间的编译依赖关系。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
对不存在编译依赖关系的编译模块在所述构建机上进行并行编译处理,对存在编译依赖关系的编译模块在所述构建机上基于所述编译依赖关系进行编译处理。
4.根据权利要求1所述的方法,其特征在于,所述待编译应用数据为待编译应用版本更新后的增量源程序数据;
所述调取编译镜像组件之前,还包括:
判断所述编译模块是否为空,如果不为空,则根据所述编译模块对应的组件标识从所述标准镜像仓库中调取编译镜像组件;如果为空,则跳过该编译模块。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述利用调取的编译镜像组件对所述获取的编译模块进行编译处理,包括:
运行调取的编译镜像组件以启动容器,在所述容器内利用调取的编译镜像组件对所述编译模块进行编译处理,当调取的编译镜像组件编译处理完成后,销毁容器。
6.根据权利要求1-4任一项所述的方法,其特征在于,所述编译描述文件还包括编译镜像组件的编译运行参数数据;
所述利用调取的编译镜像组件对所述获取的编译模块进行编译处理,包括:
利用调取的编译镜像组件以及所述调取的编译组件的编译运行参数数据对所述获取的编译模块进行编译处理。
7.根据权利要求2所述的方法,其特征在于,所述方法还包括:
当判断完成所述编译运行步骤后,将各编译模块的编译结果进行打包处理,获得所述待编译应用数据的版本包。
8.根据权利要求1所述的方法,其特征在于,所述编译镜像组件包括MAVEN镜像、NODEJS镜像、DB镜像、WAS镜像、JAVA镜像、COPY镜像、PAAS镜像、PYTHON镜像、LIBERTY镜像、CHECK镜像、GO镜像中的一种或多种。
9.一种编译方法,其特征在于,所述方法包括:
获取待编译应用数据的编译描述文件,所述待编译应用数据包括多个编译模块;所述待编译应用数据包括应用的待编译源程序数据,所述多个编译模块是根据节点对所述待编译应用数据进行划分得到的,
解析所述编译描述文件,获得编译模块对应的编译模块标识、源码路径数据以及编译镜像组件的组件标识;
根据所述源码路径数据以及编译模块标识获取所述待编译应用数据的编译模块;
根据获取的编译模块对应的组件标识调取编译镜像组件;
利用调取的编译镜像组件对所述获取的编译模块进行编译处理,获得编译结果。
10.一种编译装置,其特征在于,包括:
数据获取模块,用于获取待编译应用数据的编译描述文件,所述待编译应用数据包括多个编译模块;所述待编译应用数据包括应用的待编译源程序数据,所述多个编译模块是根据节点对所述待编译应用数据进行划分得到的,
数据解析模块,用于解析所述编译描述文件,获得编译模块对应的编译模块标识、源码路径数据以及编译镜像组件的组件标识;
源程序获取模块,用于根据所述源码路径数据以及编译模块标识获取所述待编译应用数据的编译模块;
编译镜像调取模块,用于根据获取的编译模块对应的组件标识调取编译镜像组件;
编译处理模块,用于利用调取的编译镜像组件对所述获取的编译模块进行编译处理,获得编译结果。
11.一种编译设备,其特征在于,包括处理器及用于存储处理器可执行指令的存储器,所述指令被所述处理器执行时实现包括以下步骤:
获取待编译应用数据的编译描述文件,所述待编译应用数据包括多个编译模块;所述待编译应用数据包括应用的待编译源程序数据,所述多个编译模块是根据节点对所述待编译应用数据进行划分得到的,
解析所述编译描述文件,获得编译模块对应的编译模块标识、源码路径数据以及编译镜像组件的组件标识;
根据所述源码路径数据以及编译模块标识获取所述待编译应用数据的编译模块;
根据获取的编译模块对应的组件标识调取编译镜像组件;
利用调取的编译镜像组件对所述获取的编译模块进行编译处理,获得编译结果。
12.一种编译系统,其特征在于,所述系统包括标准镜像仓库、构建机以及版本库,所述标准镜像仓库中设置有编译镜像组件,所述版本库中设置有待编译应用数据以及所述待编译应用数据的编译描述文件,所述待编译应用数据包括多个编译模块;所述待编译应用数据包括应用的待编译源程序数据,所述多个编译模块是根据节点对所述待编译应用数据进行划分得到的,
所述构建机根据构建请求所述版本库中获取所述编译描述文件,所述构建请求包括所述待编译应用数据的标识信息;
所述构建机解析所述编译描述文件,解析所述编译描述文件,获得编译模块对应的编译模块标识、源码路径数据以及编译镜像组件的组件标识;
所述构建机根据所述源码路径数据以及编译模块标识从所述版本库中获取所述待编译应用数据的编译模块;
所述构建机根据获取的编译模块对应的组件标识从所述标准镜像仓库中调取编译镜像组件;
所述构建机利用调取的编译镜像组件对所述获取的编译模块进行编译处理,获得编译结果。
CN201910908789.3A 2019-09-25 2019-09-25 一种编译方法、装置及系统 Active CN110673853B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910908789.3A CN110673853B (zh) 2019-09-25 2019-09-25 一种编译方法、装置及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910908789.3A CN110673853B (zh) 2019-09-25 2019-09-25 一种编译方法、装置及系统

Publications (2)

Publication Number Publication Date
CN110673853A CN110673853A (zh) 2020-01-10
CN110673853B true CN110673853B (zh) 2023-09-15

Family

ID=69079125

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910908789.3A Active CN110673853B (zh) 2019-09-25 2019-09-25 一种编译方法、装置及系统

Country Status (1)

Country Link
CN (1) CN110673853B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111552508B (zh) * 2020-04-29 2023-03-14 杭州数梦工场科技有限公司 应用程序版本构建方法、装置、电子设备
CN111651147B (zh) * 2020-05-31 2023-06-30 四川亨通网智科技有限公司 一种系统快速搭建组件的方法
CN111708541A (zh) * 2020-06-22 2020-09-25 深圳市友华通信技术有限公司 镜像文件的编译方法和装置
CN111897548B (zh) * 2020-07-24 2023-11-10 平安证券股份有限公司 前端资源发布方法、装置、电子设备及计算机存储介质
CN112114814A (zh) * 2020-09-22 2020-12-22 北京达佳互联信息技术有限公司 编译文件确定方法及装置、应用程序生成方法及装置
CN112363803B (zh) * 2020-11-13 2022-06-07 浪潮电子信息产业股份有限公司 一种镜像构建方法、系统、设备及介质
CN112558981B (zh) * 2020-12-23 2024-02-06 上海万向区块链股份公司 基于jenkinsfile的自定义编译部署方法及系统
CN112783508B (zh) * 2021-02-01 2022-05-24 北京百度网讯科技有限公司 文件的编译方法、装置、设备以及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108984179A (zh) * 2018-06-28 2018-12-11 北京奇安信科技有限公司 一种Linux下编译处理方法及装置
CN109871213A (zh) * 2018-12-25 2019-06-11 武汉烽火信息集成技术有限公司 基于国产平台的OpenStack容器化系统及方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7509633B2 (en) * 2004-12-16 2009-03-24 International Business Machines Corporation System and method for grid-based distribution of Java project compilation

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108984179A (zh) * 2018-06-28 2018-12-11 北京奇安信科技有限公司 一种Linux下编译处理方法及装置
CN109871213A (zh) * 2018-12-25 2019-06-11 武汉烽火信息集成技术有限公司 基于国产平台的OpenStack容器化系统及方法

Also Published As

Publication number Publication date
CN110673853A (zh) 2020-01-10

Similar Documents

Publication Publication Date Title
CN110673853B (zh) 一种编译方法、装置及系统
CN109766099B (zh) 前端源码编译方法、装置、存储介质及计算机设备
CN108572845B (zh) 分布式微服务集群的升级方法及相关系统
CN111309335B (zh) 插件应用的编译方法、装置及计算机可读存储介质
CN106569880B (zh) 一种Android应用间动态共享资源的方法及系统
CN111897570A (zh) 一种基于Maven插件的多依赖项文件提取方法及装置
CN110569250B (zh) 一种物联网网元的解析库的管理方法及装置
CN105242962A (zh) 基于异构众核的轻量级线程快速触发方法
CN112463123A (zh) 任务编译方法、装置、网络节点、系统及存储介质
CN111176717A (zh) 生成安装包的方法、装置及电子设备
CN111399840A (zh) 一种模块开发方法及装置
CN104133676A (zh) 一种基于脚本的功能执行方法和设备
CN115328529B (zh) 应用管理方法及相关设备
CN111158743B (zh) 大数据运维管理平台
CN112000334A (zh) 页面开发方法、装置、服务器及存储介质
CN111443919A (zh) Dsp多核处理器上sca核心框架的实现方法
CN103488517A (zh) Php代码编译方法、php代码运行方法及装置
KR20110080448A (ko) 애플리케이션 구축 시스템 및 그 방법
CN113900704A (zh) 应用程序安装包的发布方法、装置、可读介质及电子设备
CN114371850A (zh) 项目构建编译和代码开发的管理方法
CN114064083A (zh) 通过在配置中心自定义模板部署云原生应用的方法及应用
CN110968339B (zh) 前端构建工具的方法、装置以及电子设备
CN117055848A (zh) 一种前端多模块联邦开发方法及系统
CN111880786A (zh) 多应用共享方法、系统、装置、电子设备及存储介质
CN110806891A (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
GR01 Patent grant
GR01 Patent grant