CN106095523A - 一种实现安卓编译隔离的方法和系统 - Google Patents
一种实现安卓编译隔离的方法和系统 Download PDFInfo
- Publication number
- CN106095523A CN106095523A CN201610391290.6A CN201610391290A CN106095523A CN 106095523 A CN106095523 A CN 106095523A CN 201610391290 A CN201610391290 A CN 201610391290A CN 106095523 A CN106095523 A CN 106095523A
- Authority
- CN
- China
- Prior art keywords
- compiling
- file
- compiler task
- machine
- docker
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
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
本发明公开了一种实现安卓编译隔离的方法和系统。其中所述方法包括:通过前端页面接收用户提交的编译任务;所述编译任务为安卓编译任务,且每个编译任务中包括:待编译文件在代码服务器上的存储路径信息;将所接收到的编译任务调度到分布式的编译机集群中的相应编译机上,由相应编译机根据编译任务从代码服务器获取对应的待编译文件、对待编译文件启动一个Docker执行编译容器,在该Docker执行编译容器中对待编译文件进行编译得到编译结果文件,将编译结果文件输出到公共数据库,删除所述Docker执行编译容器。采用Docker执行编译容器可以快速、独立地配置编译环境,同时占用资源少,编译效率高。
Description
技术领域
本发明涉及编译领域,具体涉及一种实现安卓编译隔离的方法和系统。
背景技术
代码编译是将程序员编写的程序源码通过编译程序编译为机器可执行文件的过程。在软件开发公司中,往往不是由个人而是多人负责开发某个软件,因此在开发过程中会产生多个版本的代码,而最终软件只能由某个最终确定的版本编译生成,因此许多公司内都搭建了代码服务器进行代码的管理。然而现有技术中对于代码编译并没有较为合理的管理方法,由于任一台开发机上都有可能安装编译程序,对代码执行编译,导致最终生成的软件产品质量难以控制。
特别地,其中针对安卓系统进行的项目,开发者根据效率等多方面的考量往往采用在Linux系统的环境下进行代码的编译。由于Linux为开源系统,发行的版本有很多,例如centos、redhat、ubuntu等,如何更有效率地实现编译环境的配置是亟待解决的问题。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的实现安卓编译隔离的方法和系统。
依据本发明的一个方面,提供了一种实现安卓编译隔离的方法,包括:
通过前端页面接收用户提交的编译任务;所述编译任务为安卓编译任务,且每个编译任务中包括:待编译文件在代码服务器上的存储路径信息;
将所接收到的编译任务调度到分布式的编译机集群中的相应编译机上,由相应编译机根据编译任务从代码服务器获取对应的待编译文件、对待编译文件启动一个Docker执行编译容器,在该Docker执行编译容器中对待编译文件进行编译得到编译结果文件,将编译结果文件输出到公共数据库,删除所述Docker执行编译容器。
可选地,该方法进一步包括:
接收各编译机反馈的编译信息,将编译任务以及与编译任务相关的用户信息和编译信息保存到回溯数据库中。
可选地,该方法进一步包括:
将编译结果文件发送到签名服务器,由签名服务器对编译结果文件进行签名操作后输出签名后的文件,以及将签名后的文件发送到回溯数据库中保存一份。
可选地,所述在该Docker编译容器中对待编译文件进行编译得到编译结果文件包括:
在该Docker编译容器中启动SSHD进程,并对外映射一个端口,通过SSH方式登录到该Docker编译容器中加工编译环境。
可选地,该方法进一步包括:
为该Docker编译容器挂载指定目录;所述指定目录中保存了编译依赖的资源。
可选地,每个编译任务中还包括:编译环境要求信息;
所述将所接收到的编译任务调度到分布式的编译机集群中的相应编译机上包括:根据预先搜集的各编译机的编译环境信息,将所接收到的编译任务分配给符合该编译任务的编译环境要求的空闲的编译机。
可选地,所述根据预先搜集的各编译机的编译环境信息,将所接收到的编译任务分配给符合该编译任务的编译环境要求的空闲的编译机包括:
将所接收到编译任务放入编译任务池中;
每接收到一个编译机的任务查询信息,根据预先搜集的各编译机的编译环境信息确定该编译机的编译环境信息,从编译任务池中找出编译环境要求信息与该编译机的编译环境信息匹配的编译任务分配给该编译机;
其中,空闲的编译机每隔预设时间发送一次任务查询信息。
可选地,每个编译任务中还包括:用户代码权限信息;
该方法在将所接收到的编译任务调度到分布式的编译机集群中的相应编译机上之前,进一步包括:将编译任务中的用户代码权限信息发送给代码服务器进行校验,在校验通过后,在编译任务中的用户代码权限信息中打上校验通过标志,然后再将编译任务调度到分布式的编译机集群中的相应的编译机上;
所述由相应编译机根据编译任务从代码服务器获取对应的待编译文件包括:相应编译机根据编译任务中的打上校验通过标志的用户代码权限信息,从代码服务器获取对应的待编译文件。
可选地,该方法进一步包括:
生成对公共数据库的访问账户信息;
接收各编译机在每次启动时发送的获取/更新公共数据库的访问账户信息的请求,将所生成的相应访问账户信息发送给发送请求的编译机。
可选地,该方法进一步包括:
将编译机反馈的编译信息,通过前端页面展示给用户。
可选地,该方法进一步包括:
通过前端页面接收用户提交的查询信息;
根据查询信息从回溯数据库和/或公共数据库中获取相应的内容,并通过前端页面展示给用户。
可选地,所述编译信息包括如下中的一种或多种:
编译机在执行编译任务时的编译环境信息;
编译机在执行编译任务时记录的编译日志信息;
编译进度信息。
依据本发明的另一方面,提供了一种实现安卓编译隔离的系统,包括:中心控制器、分布式的编译机集群、代码服务器、公共数据库;
中心控制器,适于通过前端页面接收用户提交的编译任务,将所接收到的编译任务调度到分布式的编译机集群中的相应编译机上;其中,所述编译任务为安卓编译任务,且每个编译任务中包括:待编译文件在代码服务器上的存储路径信息;
编译机,适于根据所分配的编译任务从代码服务器获取对应的待编译文件,对待编译文件启动一个Docker执行编译容器,在该Docker执行编译容器中对待编译文件进行编译得带编译结果文件,将编译结果文件输出到公共数据库,删除所述Docker执行编译容器。
可选地,中心控制器,还适于接收各编译机反馈的编译信息,将编译任务以及与编译任务相关的用户信息和编译信息保存到回溯数据库中。
可选地,编译机还将编译结果文件发送到签名服务器,由签名服务器对编译结果文件进行签名操作后输出签名后的文件,以及将签名后的文件发送到回溯数据库中保存一份。
可选地,编译机还适于在该Docker编译容器中启动SSHD进程,并对外映射一个端口,通过SSH方式登录到该Docker编译容器中加工编译环境。
可选地,编译机为该Docker编译容器挂载指定目录;所述指定目录中保存了编译依赖的资源。
可选地,每个编译任务中还包括:编译环境要求信息;
所述中心控制器,适于根据预先搜集的各编译机的编译环境信息,将所接收到的编译任务分配给符合该编译任务的编译环境要求的空闲的编译机。
可选地,所述中心控制器,适于将所接收到编译任务放入编译任务池中;每接收到一个编译机的任务查询信息,根据预先搜集的各编译机的编译环境信息确定该编译机的编译环境信息,从编译任务池中找出编译环境要求信息与该编译机的编译环境信息匹配的编译任务分配给该编译机;
其中,空闲的编译机每隔预设时间向中心控制器发送一次任务查询信息。
可选地,每个编译任务中还包括:用户代码权限信息;
所述中心控制器,在将所接收到的编译任务调度到分布式的编译机集群中的相应编译机上之前,进一步适于将编译任务中的用户代码权限信息发送给代码服务器进行校验,在校验通过后,在编译任务中的用户代码权限信息中打上校验通过标志,然后再将编译任务调度到相应的编译机上;
编译机适于根据编译任务中的打上校验通过标志的用户代码权限信息,从代码服务器获取对应的待编译文件。
可选地,所述中心控制器,进一步适于生成对公共数据库的访问账户信息;接收各编译机在每次启动时发送的获取/更新公共数据库的访问账户信息的请求,将所生成的相应访问账户信息发送给发送请求的编译机。
可选地,所述中心控制器,进一步适于将编译机反馈的编译信息,通过前端页面展示给用户。
可选地,所述中心控制器,进一步适于通过前端页面接收用户提交的查询信息;
根据查询信息从回溯数据库和/或公共数据库中获取相应的内容,并通过前端页面展示给用户。
可选地,所述编译信息包括如下中的一种或多种:
编译机在执行编译任务时的编译环境信息;
编译机在执行编译任务时记录的编译日志信息;
编译进度信息。
由上述可知,本发明的技术方案,在多台编译机上执行文件的编译,这些编译机构成了分布式的编译机集群,在通过前端页面接收到用户提交的编译任务后,从编译任务中提取待编译代码在代码服务器中的存储路径信息,将编译任务调度到合适的编译机后便可以根据存储路径信息获取待编译文件进行编译,具体地,采用为每个待编译文件临时生成的Docker执行编译容器来实现该过程。生成的编译结果文件被输出到公共数据库中进行保存。该技术方案实现了针对安卓系统开发的待编译文件的分布式编译,提供了独立、统一管理的编译环境,控制了成品质量;同时编译的结果文件保存在公共数据库中方便提取和调用;采用Docker执行编译容器可以快速、独立地配置编译环境,同时占用资源少,编译效率高。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明一个实施例的一种实现安卓编译隔离的方法的流程图;
图2示出了根据本发明一个实施例的一种实现安卓编译隔离的系统的结果示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示出了根据本发明一个实施例的一种实现安卓编译隔离的方法的流程图,如图1所示,该方法包括:
步骤S110,通过前端页面接收用户提交的编译任务;编译任务为安卓编译任务,且每个编译任务中包括:待编译文件在代码服务器上的存储路径信息。
步骤S120,将所接收到的编译任务调度到分布式的编译机集群中的相应编译机上,由相应编译机根据编译任务从代码服务器获取对应的待编译文件、对待编译文件启动一个Docker执行编译容器,在该Docker执行编译容器中对待编译文件进行编译得到编译结果文件,将编译结果文件输出到公共数据库,删除Docker执行编译容器。
Docker是使用沙箱机制实现的一种应用容器引擎,开发者可以打包他们的应用和依赖包到一个可移植的容器(Docker执行编译容器)中。由于Docker基于LXC(LinuxContainer)的轻量级虚拟化的特点,其相比KVM虚拟机等具有启动快,资源占用小等显著优势,因此十分适合代码编译这种需要快速启停的任务,以及便于实现自动化控制和编译环境的配置。
可见,图1所示的方法,在多台编译机上执行文件的编译,这些编译机构成了分布式的编译机集群,在通过前端页面接收到用户提交的编译任务后,从编译任务中提取待编译代码在代码服务器中的存储路径信息,将编译任务调度到合适的编译机后便可以根据存储路径信息获取待编译文件进行编译,具体地,采用为每个待编译文件临时生成的Docker执行编译容器来实现该过程。生成的编译结果文件被输出到公共数据库中进行保存。该技术方案实现了针对安卓系统开发的待编译文件的分布式编译,提供了独立、统一管理的编译环境,控制了成品质量;同时编译的结果文件保存在公共数据库中方便提取和调用;采用Docker执行编译容器可以快速、独立地配置编译环境,同时占用资源少,编译效率高。
在本发明的一个实施例中,图1所示的方法进一步包括:接收各编译机反馈的编译信息,将编译任务以及与编译任务相关的用户信息和编译信息保存到回溯数据库中。
回溯数据库中的相关信息便于日后问题的回溯和复查,并且本实施例中的步骤与前述各步骤进行结合,为安卓编译隔离实现了整体的可控、可溯的编译框架。
在本发明的一个实施例中,上述方法进一步包括:将编译结果文件发送到签名服务器,由签名服务器对编译结果文件进行签名操作后输出签名后的文件,以及将签名后的文件发送到回溯数据库中保存一份。
编译结果文件进行签名后就拥有了软件开发者的认证,而软件开发公司中可能包括多个开发项目组,各项目组所使用的签名证书可能是不同的,因此优选地,在本实施例中为不同的开发项目组组配置不同的签名证书。进一步地,签名操作是对编译结果文件进行的操作,因此结合以上因素,可以将签名操作以独立的签名服务器的方式进行实现,这样就可以从公共数据库中获取到编译结果文件进行签名操作,使得签名操作与编译操作相互独立,更有效率。签名后的文件既可以发送到回溯数据库中保存一份,同样也可以推送至公共数据库便于其他编译任务调用。
在本发明的一个实施例中,图1所示的方法中,在该Docker编译容器中对待编译文件进行编译得到编译结果文件包括:在该Docker编译容器中启动SSHD进程,并对外映射一个端口,通过SSH方式登录到该Docker编译容器中加工编译环境。
Docker执行编译容器可以基于镜像文件通过命令行的方式启动,其中,镜像可以看作是包含有某些软件的容器系统,例如ubuntu就是一个官方的基础镜像,很多镜像都是基于这个镜像“衍生”,这些镜像包含基本的ubuntu系统。又例如,hipache是一个官方的镜像容器,运行后可以支持http和websocket的代理服务,这个镜像本身也是基于ubuntu的。每个Docker执行编译容器都可以使用Docker Pull的方式从Docker官方源下载镜像文件。除此之外,开发者还可以根据需要自行编译或者从github获取DockerFile文件。Dockerfile可以被看成是一个脚本,这个脚本会在容器每次启动时执行,在Dockerfile中包含编写好的基础软件的安装脚本和配置脚本。在启动Docker执行编译容器后,在该Docker编译容器中启动SSHD进程,并对外映射一个端口,用户可以通过SSH方式登录到该Docker编译容器中加工编译环境。
具体地,以镜像方式为例,基于每个镜像生成Docker编译执行容器和SSHD进程容器,上述容器是随编译任务创建自动创建启动的。两个容器共享同一个目录,以此目录保留公共数据,例如JDK(Java Development Kit,Java开发工具包)、Android SDK(SoftwareDevelopment Kit,软件开发工具包)、Android NDK(Native Development Kit,原生开发工具包)、gradle等公用数据资源,也即是说,各种编译依赖的开发包、数据、工具等都可以存放到该目录下。因此在本发明的一个实施例中,图1所示的方法进一步包括:为该Docker编译容器挂载指定目录;指定目录中保存了编译依赖的资源。
下面给出了Docker编译执行容器和SSHD容器的启动代码示例:
//SSHD容器
docker run-d-it--name testsssh-p 21000:22-v/data01/docker_build/test:/android/build ssh
//执行编译容器
docker run–d–it–name buildname001–v/data01/docker_build/test_id:/android/build/android/build/run.sh
具体地,执行编译容器启动前会创建编译脚本run.sh。(下例是一个gradle编译android工程的脚本示例)
#in workpath
cd$QBUILD_PATH
#set local.properties
echo'sdk.dir=$ANDROID_SDK_HOME'>>local.properties
echo'ndk.dir=$ANDROID_NDK_HOME'>>local.properties
#build to$QBUILD_LOG
cd novel
gradle--debug--stacktrace clean assemblehaosoureader>>$QBUILD_LOG2>&1
#backup buildout
cp$QBUILD_PATH/novel/reader/build/outputs/apk/*.apk$QBUILD_OUT
其中,docker–d参数实现了每次run.sh执行完成后,容器自动删除。
每次SSHD容器修改的数据目录会作为原始数据保留,Docker编译执行容器创建之前会将次目录重新拷贝一份作为实际执行目录。例如SSHD容器挂载目录/data01/docker_build/test执行编译时,将次目录拷贝成/data01/docker_build/test_id id作为编译任务标记唯一标识,由此每次编译使用的环境继承于初始环境,可以单独使用而互不影响。
在本发明的一个实施例中,图1所示的方法中,每个编译任务中还包括:编译环境要求信息;将所接收到的编译任务调度到分布式的编译机集群中的相应编译机上包括:根据预先搜集的各编译机的编译环境信息,将所接收到的编译任务分配给符合该编译任务的编译环境要求的空闲的编译机。
例如,根据开发项目的需求不同,编译过程中可以根据设置参数的不同生成不同的编译结果文件,例如要求生成的编译结果文件包含某特定类型的调试用文件。如果某个开发项目强制要求编译输出该文件,则可以在后台将该选项设置为无法在前端页面进行操作的默认设置项。
在本发明的一个实施例中,上述方法中,根据预先搜集的各编译机的编译环境信息,将所接收到的编译任务分配给符合该编译任务的编译环境要求的空闲的编译机包括:将所接收到编译任务放入编译任务池中;每接收到一个编译机的任务查询信息,根据预先搜集的各编译机的编译环境信息确定该编译机的编译环境信息,从编译任务池中找出编译环境要求信息与该编译机的编译环境信息匹配的编译任务分配给该编译机;其中,空闲的编译机每隔预设时间发送一次任务查询信息。
例如,空闲的编译机A每隔5分钟发送一次任务查询信息,当接收到该信息后,从编译环境信息列表中确定该编译机A安装有JDK,可以执行该编译任务,因此从编译任务池中确定了相应任务并分配给编译机A。
在本发明的一个实施例中,图1所示的方法中,每个编译任务中还包括:用户代码权限信息;该方法在将所接收到的编译任务调度到分布式的编译机集群中的相应编译机上之前,进一步包括:将编译任务中的用户代码权限信息发送给代码服务器进行校验,在校验通过后,在编译任务中的用户代码权限信息中打上校验通过标志,然后再将编译任务调度到分布式的编译机集群中的相应的编译机上;由相应编译机根据编译任务从代码服务器获取对应的待编译文件包括:相应编译机根据编译任务中的打上校验通过标志的用户代码权限信息,从代码服务器获取对应的待编译文件。
一个开发项目在代码服务器中可能存在多个版本的待编译文件,同时在代码服务器中存在多个开发项目的待编译文件,为了安全控制,可以要求每个项目只有权限较高的用户可以访问并提取其中的待编译文件进行编译。在本实施例中,用户A通过前端页面提交编译任务时,需要在页面的相应位置输入用户代码权限信息,例如代码服务器的登录名和密码,则通过该用户代码权限信息先去代码服务器进行检验,通过后在编译任务中的用户代码权限信息中打上校验通过标志,再将编译任务调度至相应的编译机上,编译机编译时通过打上校验通过标志的用户代码权限信息,从代码服务器获取对应的待编译文件进行编译。
在本发明的一个实施例中,图1所示的方法进一步包括:生成对公共数据库的访问账户信息;接收各编译机在每次启动时发送的获取/更新公共数据库的访问账户信息的请求,将所生成的相应访问账户信息发送给发送请求的编译机。
由于公共数据库中包含大量的从代码服务器获取的内容,因此如果不对公共数据库的访问权限加以限制,很容易引起安全问题,因此在本实施例中,需要生成对公共数据库的访问账户信息,使得编译机根据获取.更新的访问账户信息来访问公共数据库。
在本发明的一个实施例中,图1所示的方法进一步包括:将编译机反馈的编译信息,通过前端页面展示给用户。具体地,编译信息包括如下中的一种或多种:编译机在执行编译任务时的编译环境信息;编译机在执行编译任务时记录的编译日志信息;编译进度信息。用户可以根据这些信息了解到编译执行的状况,方便进行中断、回滚等操作。
在本发明的一个实施例中,上述方法进一步包括:通过前端页面接收用户提交的查询信息;根据查询信息从回溯数据库和/或公共数据库中获取相应的内容,并通过前端页面展示给用户。
其中,提交查询信息的过程与编译过程可以是相互独立的,例如在提交编译任务前,查看公共数据库中是否包含所需的头文件,又例如,在编译结果文件出现问题需要排查时,访问回溯数据库调取之前执行过的编译任务等信息。
图2示出了根据本发明一个实施例的一种实现安卓编译隔离的系统的结果示意图,如图2所示,实现安卓编译隔离的系统200包括:中心控制器210、分布式的编译机220集群、代码服务器230、公共数据库240。
中心控制器210,适于通过前端页面接收用户提交的编译任务,将所接收到的编译任务调度到分布式的编译机220集群中的相应编译机220上;其中,编译任务为安卓编译任务,且每个编译任务中包括:待编译文件在代码服务器230上的存储路径信息。
编译机220,适于根据所分配的编译任务从代码服务器230获取对应的待编译文件,对待编译文件启动一个Docker执行编译容器,在该Docker执行编译容器中对待编译文件进行编译得带编译结果文件,将编译结果文件输出到公共数据库240,删除Docker执行编译容器。
可见,图2所示的系统,在多台编译机上执行文件的编译,这些编译机构成了分布式的编译机集群,在通过前端页面接收到用户提交的编译任务后,从编译任务中提取待编译代码在代码服务器中的存储路径信息,将编译任务调度到合适的编译机后便可以根据存储路径信息获取待编译文件进行编译,具体地,采用为每个待编译文件临时生成的Docker执行编译容器来实现该过程。生成的编译结果文件被输出到公共数据库中进行保存。该技术方案实现了针对安卓系统开发的待编译文件的分布式编译,提供了独立、统一管理的编译环境,控制了成品质量;同时编译的结果文件保存在公共数据库中方便提取和调用;采用Docker执行编译容器可以快速、独立地配置编译环境,同时占用资源少,编译效率高。
在本发明的一个实施例中,上述系统中,中心控制器210,还适于接收各编译机220反馈的编译信息,将编译任务以及与编译任务相关的用户信息和编译信息保存到回溯数据库中。
在本发明的一个实施例中,上述系统中,编译机220还将编译结果文件发送到签名服务器,由签名服务器对编译结果文件进行签名操作后输出签名后的文件,以及将签名后的文件发送到回溯数据库中保存一份。
在本发明的一个实施例中,上述系统中,编译机220还适于在该Docker编译容器中启动SSHD进程,并对外映射一个端口,通过SSH方式登录到该Docker编译容器中加工编译环境。
在本发明的一个实施例中,上述系统中,编译机220为该Docker编译容器挂载指定目录;指定目录中保存了编译依赖的资源。
在本发明的一个实施例中,上述系统中,每个编译任务中还包括:编译环境要求信息;中心控制器210,适于根据预先搜集的各编译机220的编译环境信息,将所接收到的编译任务分配给符合该编译任务的编译环境要求的空闲的编译机220。
在本发明的一个实施例中,上述系统中,中心控制器210,适于将所接收到编译任务放入编译任务池中;每接收到一个编译机220的任务查询信息,根据预先搜集的各编译机220的编译环境信息确定该编译机220的编译环境信息,从编译任务池中找出编译环境要求信息与该编译机220的编译环境信息匹配的编译任务分配给该编译机220;其中,空闲的编译机220每隔预设时间向中心控制器210发送一次任务查询信息。
在本发明的一个实施例中,上述系统中,每个编译任务中还包括:用户代码权限信息;中心控制器210,在将所接收到的编译任务调度到分布式的编译机220集群中的相应编译机220上之前,进一步适于将编译任务中的用户代码权限信息发送给代码服务器230进行校验,在校验通过后,在编译任务中的用户代码权限信息中打上校验通过标志,然后再将编译任务调度到相应的编译机220上;编译机220适于根据编译任务中的打上校验通过标志的用户代码权限信息,从代码服务器230获取对应的待编译文件。
在本发明的一个实施例中,上述系统中,中心控制器210,进一步适于生成对公共数据库240的访问账户信息;接收各编译机220在每次启动时发送的获取/更新公共数据库240的访问账户信息的请求,将所生成的相应访问账户信息发送给发送请求的编译机220。
在本发明的一个实施例中,上述系统中,中心控制器210,进一步适于将编译机220反馈的编译信息,通过前端页面展示给用户。
在本发明的一个实施例中,上述系统中,中心控制器210,进一步适于通过前端页面接收用户提交的查询信息;
根据查询信息从回溯数据库和/或公共数据库240中获取相应的内容,并通过前端页面展示给用户。
在本发明的一个实施例中,上述系统中,编译信息包括如下中的一种或多种:编译机220在执行编译任务时的编译环境信息;编译机220在执行编译任务时记录的编译日志信息;编译进度信息。
需要说明的是,上述各系统实施例的具体实现方式与前述对应方法实施例的具体实施方式相同,在此不再赘述。
综上所述,本发明的技术方案,在多台编译机上执行文件的编译,这些编译机构成了分布式的编译机集群,在通过前端页面接收到用户提交的编译任务后,从编译任务中提取待编译代码在代码服务器中的存储路径信息,将编译任务调度到合适的编译机后便可以根据存储路径信息获取待编译文件进行编译,具体地,采用为每个待编译文件临时生成的Docker执行编译容器来实现该过程。生成的编译结果文件被输出到公共数据库中进行保存。该技术方案实现了针对安卓系统开发的待编译文件的分布式编译,提供了独立、统一管理的编译环境,控制了成品质量;同时编译的结果文件保存在公共数据库中方便提取和调用;采用Docker执行编译容器可以快速、独立地配置编译环境,同时占用资源少,编译效率高。
需要说明的是:
在此提供的算法和显示不与任何特定计算机、虚拟装置或者其它设备固有相关。各种通用装置也可以与基于在此的示教一起使用。根据上面的描述,构造这类装置所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的实现安卓编译隔离的系统中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
本发明的实施例公开了A1、一种实现安卓编译隔离的方法,其中,该方法包括:
通过前端页面接收用户提交的编译任务;所述编译任务为安卓编译任务,且每个编译任务中包括:待编译文件在代码服务器上的存储路径信息;
将所接收到的编译任务调度到分布式的编译机集群中的相应编译机上,由相应编译机根据编译任务从代码服务器获取对应的待编译文件、对待编译文件启动一个Docker执行编译容器,在该Docker执行编译容器中对待编译文件进行编译得到编译结果文件,将编译结果文件输出到公共数据库,删除所述Docker执行编译容器。
A2、如A1所述的方法,其中,该方法进一步包括:
接收各编译机反馈的编译信息,将编译任务以及与编译任务相关的用户信息和编译信息保存到回溯数据库中。
A3、如A2所述的方法,其中,该方法进一步包括:
将编译结果文件发送到签名服务器,由签名服务器对编译结果文件进行签名操作后输出签名后的文件,以及将签名后的文件发送到回溯数据库中保存一份。
A4、如A1所述的方法,其中,所述在该Docker编译容器中对待编译文件进行编译得到编译结果文件包括:
在该Docker编译容器中启动SSHD进程,并对外映射一个端口,通过SSH方式登录到该Docker编译容器中加工编译环境。
A5、如A1所述的方法,其中,该方法进一步包括:
为该Docker编译容器挂载指定目录;所述指定目录中保存了编译依赖的资源。
A6、如A1所述的方法,其中,
每个编译任务中还包括:编译环境要求信息;
所述将所接收到的编译任务调度到分布式的编译机集群中的相应编译机上包括:根据预先搜集的各编译机的编译环境信息,将所接收到的编译任务分配给符合该编译任务的编译环境要求的空闲的编译机。
A7、如A6所述的方法,其中,所述根据预先搜集的各编译机的编译环境信息,将所接收到的编译任务分配给符合该编译任务的编译环境要求的空闲的编译机包括:
将所接收到编译任务放入编译任务池中;
每接收到一个编译机的任务查询信息,根据预先搜集的各编译机的编译环境信息确定该编译机的编译环境信息,从编译任务池中找出编译环境要求信息与该编译机的编译环境信息匹配的编译任务分配给该编译机;
其中,空闲的编译机每隔预设时间发送一次任务查询信息。
A8、如A1所述的方法,其中,
每个编译任务中还包括:用户代码权限信息;
该方法在将所接收到的编译任务调度到分布式的编译机集群中的相应编译机上之前,进一步包括:将编译任务中的用户代码权限信息发送给代码服务器进行校验,在校验通过后,在编译任务中的用户代码权限信息中打上校验通过标志,然后再将编译任务调度到分布式的编译机集群中的相应的编译机上;
所述由相应编译机根据编译任务从代码服务器获取对应的待编译文件包括:相应编译机根据编译任务中的打上校验通过标志的用户代码权限信息,从代码服务器获取对应的待编译文件。
A9、如A1所述的方法,其中,该方法进一步包括:
生成对公共数据库的访问账户信息;
接收各编译机在每次启动时发送的获取/更新公共数据库的访问账户信息的请求,将所生成的相应访问账户信息发送给发送请求的编译机。
A10、如A1所述的方法,其中,该方法进一步包括:
将编译机反馈的编译信息,通过前端页面展示给用户。
A11、如A2所述的方法,其中,该方法进一步包括:
通过前端页面接收用户提交的查询信息;
根据查询信息从回溯数据库和/或公共数据库中获取相应的内容,并通过前端页面展示给用户。
A12、如A1所述的方法,其中,所述编译信息包括如下中的一种或多种:
编译机在执行编译任务时的编译环境信息;
编译机在执行编译任务时记录的编译日志信息;
编译进度信息。
本发明的实施例还公开了B13、一种实现安卓编译隔离的系统,其中,该编译系统包括:中心控制器、分布式的编译机集群、代码服务器、公共数据库;
中心控制器,适于通过前端页面接收用户提交的编译任务,将所接收到的编译任务调度到分布式的编译机集群中的相应编译机上;其中,所述编译任务为安卓编译任务,且每个编译任务中包括:待编译文件在代码服务器上的存储路径信息;
编译机,适于根据所分配的编译任务从代码服务器获取对应的待编译文件,对待编译文件启动一个Docker执行编译容器,在该Docker执行编译容器中对待编译文件进行编译得带编译结果文件,将编译结果文件输出到公共数据库,删除所述Docker执行编译容器。
B14、如B13所述的系统,其中,
中心控制器,还适于接收各编译机反馈的编译信息,将编译任务以及与编译任务相关的用户信息和编译信息保存到回溯数据库中。
B15、如B14所述的系统,其中,
编译机还将编译结果文件发送到签名服务器,由签名服务器对编译结果文件进行签名操作后输出签名后的文件,以及将签名后的文件发送到回溯数据库中保存一份。
B16、如B13所述的系统,其中,
编译机还适于在该Docker编译容器中启动SSHD进程,并对外映射一个端口,通过SSH方式登录到该Docker编译容器中加工编译环境。
B17、如B13所述的系统,其中,
编译机为该Docker编译容器挂载指定目录;所述指定目录中保存了编译依赖的资源。
B18、如B13所述的系统,其中,
每个编译任务中还包括:编译环境要求信息;
所述中心控制器,适于根据预先搜集的各编译机的编译环境信息,将所接收到的编译任务分配给符合该编译任务的编译环境要求的空闲的编译机。
B19、如B18所述的系统,其中,
所述中心控制器,适于将所接收到编译任务放入编译任务池中;每接收到一个编译机的任务查询信息,根据预先搜集的各编译机的编译环境信息确定该编译机的编译环境信息,从编译任务池中找出编译环境要求信息与该编译机的编译环境信息匹配的编译任务分配给该编译机;
其中,空闲的编译机每隔预设时间向中心控制器发送一次任务查询信息。
B20、如B13所述的系统,其中,
每个编译任务中还包括:用户代码权限信息;
所述中心控制器,在将所接收到的编译任务调度到分布式的编译机集群中的相应编译机上之前,进一步适于将编译任务中的用户代码权限信息发送给代码服务器进行校验,在校验通过后,在编译任务中的用户代码权限信息中打上校验通过标志,然后再将编译任务调度到相应的编译机上;
编译机适于根据编译任务中的打上校验通过标志的用户代码权限信息,从代码服务器获取对应的待编译文件。
B21、如B13所述的系统,其中,
所述中心控制器,进一步适于生成对公共数据库的访问账户信息;接收各编译机在每次启动时发送的获取/更新公共数据库的访问账户信息的请求,将所生成的相应访问账户信息发送给发送请求的编译机。
B22、如B13所述的系统,其中,
所述中心控制器,进一步适于将编译机反馈的编译信息,通过前端页面展示给用户。
B23、如B14所述的系统,其中,
所述中心控制器,进一步适于通过前端页面接收用户提交的查询信息;根据查询信息从回溯数据库和/或公共数据库中获取相应的内容,并通过前端页面展示给用户。
B24、如B13所述的系统,其中,所述编译信息包括如下中的一种或多种:
编译机在执行编译任务时的编译环境信息;
编译机在执行编译任务时记录的编译日志信息;
编译进度信息。
Claims (10)
1.一种实现安卓编译隔离的方法,其中,该方法包括:
通过前端页面接收用户提交的编译任务;所述编译任务为安卓编译任务,且每个编译任务中包括:待编译文件在代码服务器上的存储路径信息;
将所接收到的编译任务调度到分布式的编译机集群中的相应编译机上,由相应编译机根据编译任务从代码服务器获取对应的待编译文件、对待编译文件启动一个Docker执行编译容器,在该Docker执行编译容器中对待编译文件进行编译得到编译结果文件,将编译结果文件输出到公共数据库,删除所述Docker执行编译容器。
2.如权利要求1所述的方法,其中,该方法进一步包括:
接收各编译机反馈的编译信息,将编译任务以及与编译任务相关的用户信息和编译信息保存到回溯数据库中。
3.如权利要求2所述的方法,其中,该方法进一步包括:
将编译结果文件发送到签名服务器,由签名服务器对编译结果文件进行签名操作后输出签名后的文件,以及将签名后的文件发送到回溯数据库中保存一份。
4.如权利要求1所述的方法,其中,所述在该Docker编译容器中对待编译文件进行编译得到编译结果文件包括:
在该Docker编译容器中启动SSHD进程,并对外映射一个端口,通过SSH方式登录到该Docker编译容器中加工编译环境。
5.如权利要求1所述的方法,其中,该方法进一步包括:
为该Docker编译容器挂载指定目录;所述指定目录中保存了编译依赖的资源。
6.一种实现安卓编译隔离的系统,其中,该编译系统包括:中心控制器、分布式的编译机集群、代码服务器、公共数据库;
中心控制器,适于通过前端页面接收用户提交的编译任务,将所接收到的编译任务调度到分布式的编译机集群中的相应编译机上;其中,所述编译任务为安卓编译任务,且每个编译任务中包括:待编译文件在代码服务器上的存储路径信息;
编译机,适于根据所分配的编译任务从代码服务器获取对应的待编译文件,对待编译文件启动一个Docker执行编译容器,在该Docker执行编译容器中对待编译文件进行编译得带编译结果文件,将编译结果文件输出到公共数据库,删除所述Docker执行编译容器。
7.如权利要求6所述的系统,其中,
中心控制器,还适于接收各编译机反馈的编译信息,将编译任务以及与编译任务相关的用户信息和编译信息保存到回溯数据库中。
8.如权利要求7所述的系统,其中,
编译机还将编译结果文件发送到签名服务器,由签名服务器对编译结果文件进行签名操作后输出签名后的文件,以及将签名后的文件发送到回溯数据库中保存一份。
9.如权利要求6所述的系统,其中,
编译机还适于在该Docker编译容器中启动SSHD进程,并对外映射一个端口,通过SSH方式登录到该Docker编译容器中加工编译环境。
10.如权利要求6所述的系统,其中,
编译机为该Docker编译容器挂载指定目录;所述指定目录中保存了编译依赖的资源。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610391290.6A CN106095523A (zh) | 2016-06-03 | 2016-06-03 | 一种实现安卓编译隔离的方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610391290.6A CN106095523A (zh) | 2016-06-03 | 2016-06-03 | 一种实现安卓编译隔离的方法和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106095523A true CN106095523A (zh) | 2016-11-09 |
Family
ID=57447527
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610391290.6A Pending CN106095523A (zh) | 2016-06-03 | 2016-06-03 | 一种实现安卓编译隔离的方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106095523A (zh) |
Cited By (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106789339A (zh) * | 2017-01-19 | 2017-05-31 | 北京仿真中心 | 一种基于轻量级虚拟化架构的分布式云仿真方法与系统 |
CN106933635A (zh) * | 2017-03-15 | 2017-07-07 | 北京搜狐新媒体信息技术有限公司 | Docker镜像生成方法及Docker容器 |
CN107168765A (zh) * | 2017-07-07 | 2017-09-15 | 惠州Tcl移动通信有限公司 | 一种远程编译软件的方法及系统 |
CN107741851A (zh) * | 2017-10-12 | 2018-02-27 | 北京元心科技有限公司 | 编译系统的编译方法、装置及终端设备 |
CN107943485A (zh) * | 2017-12-11 | 2018-04-20 | 北京奇虎科技有限公司 | 一种补丁编译平台及补丁编译方法 |
CN108279976A (zh) * | 2017-12-26 | 2018-07-13 | 努比亚技术有限公司 | 一种编译资源调度方法、计算机及计算机可读存储介质 |
CN108984179A (zh) * | 2018-06-28 | 2018-12-11 | 北京奇安信科技有限公司 | 一种Linux下编译处理方法及装置 |
CN109324799A (zh) * | 2018-09-25 | 2019-02-12 | 珠海市筑巢科技有限公司 | 一种代码编译方法、计算机装置及计算机可读存储介质 |
CN109491662A (zh) * | 2018-10-31 | 2019-03-19 | 珠海市筑巢科技有限公司 | 代码打包方法、计算机装置及计算机可读存储介质、代码打包系统 |
CN109783195A (zh) * | 2019-01-16 | 2019-05-21 | 杭州趣链科技有限公司 | 一种基于容器的智能合约实时调试方法 |
CN110554876A (zh) * | 2018-05-31 | 2019-12-10 | 北京京东尚科信息技术有限公司 | 用于编译安卓工程的方法和装置 |
CN110569035A (zh) * | 2019-08-08 | 2019-12-13 | 数字广东网络建设有限公司 | 软件开发项目的代码编译方法、装置、设备和存储介质 |
CN110795103A (zh) * | 2019-09-27 | 2020-02-14 | 北京五八信息技术有限公司 | 一种代码编译方法以及编译机 |
CN110955431A (zh) * | 2018-09-27 | 2020-04-03 | 北京国双科技有限公司 | 编译环境的处理方法及装置 |
CN111147429A (zh) * | 2018-11-06 | 2020-05-12 | 上海仪电(集团)有限公司中央研究院 | 一种项目研发环境部署系统 |
CN111381829A (zh) * | 2020-03-06 | 2020-07-07 | 北京达佳互联信息技术有限公司 | 在线编程方法、装置、电子设备和存储介质 |
CN111399865A (zh) * | 2020-04-21 | 2020-07-10 | 贵州新致普惠信息技术有限公司 | 一种基于容器技术自动构建目标文件的方法 |
CN111552508A (zh) * | 2020-04-29 | 2020-08-18 | 杭州数梦工场科技有限公司 | 应用程序版本构建方法、装置、电子设备 |
CN113434146A (zh) * | 2021-06-22 | 2021-09-24 | 青岛海尔科技有限公司 | 代码的编译方法、装置、存储介质及电子装置 |
CN113568755A (zh) * | 2021-08-04 | 2021-10-29 | 上海易景信息科技有限公司 | 一种分布式编译系统及分布式编译方法 |
CN114072765A (zh) * | 2019-07-16 | 2022-02-18 | 国际商业机器公司 | 用于基于容器的虚拟化系统的方法 |
CN114157654A (zh) * | 2021-10-28 | 2022-03-08 | 杭州未名信科科技有限公司 | 一种集成电路协同设计系统和方法 |
WO2022198308A1 (en) * | 2021-03-23 | 2022-09-29 | Blackberry Limited | Method and system for a customized local build environment image |
WO2023051034A1 (zh) * | 2021-09-30 | 2023-04-06 | 中兴通讯股份有限公司 | 终端代码增量编译方法、系统、装置、服务器和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102495736A (zh) * | 2011-12-19 | 2012-06-13 | 曙光信息产业(北京)有限公司 | 一种在可执行文件中标识软件代码svn版本的方法和系统 |
CN104965748A (zh) * | 2015-06-03 | 2015-10-07 | 广州华多网络科技有限公司 | 编译平台、编译方法及装置 |
CN105068855A (zh) * | 2015-08-19 | 2015-11-18 | 北京奇虎科技有限公司 | 一种编译安卓包开发文件的方法、服务器和系统 |
CN105468427A (zh) * | 2015-11-19 | 2016-04-06 | 深圳创维数字技术有限公司 | 一种自动编译和发布的实现方法及系统 |
-
2016
- 2016-06-03 CN CN201610391290.6A patent/CN106095523A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102495736A (zh) * | 2011-12-19 | 2012-06-13 | 曙光信息产业(北京)有限公司 | 一种在可执行文件中标识软件代码svn版本的方法和系统 |
CN104965748A (zh) * | 2015-06-03 | 2015-10-07 | 广州华多网络科技有限公司 | 编译平台、编译方法及装置 |
CN105068855A (zh) * | 2015-08-19 | 2015-11-18 | 北京奇虎科技有限公司 | 一种编译安卓包开发文件的方法、服务器和系统 |
CN105468427A (zh) * | 2015-11-19 | 2016-04-06 | 深圳创维数字技术有限公司 | 一种自动编译和发布的实现方法及系统 |
Non-Patent Citations (3)
Title |
---|
HUA的博客: ""Docker入门实战-SSH连接docker容器"", 《HTTPS://BLOG.CSDN.NET/QQ626387/ARTICLE/DETAILS/50506636》 * |
SAYMAGIC: ""构建编译Android项目的Docker镜像"", 《HTTPS://BLOG.SAYMAGIC.CN/2016/01/25/DOCKER-IMAGE-FOR-ANDROID.HTML》 * |
马迪亚斯 等: "《Docker即学即用》", 31 December 2015, 中国电力出版社 * |
Cited By (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106789339A (zh) * | 2017-01-19 | 2017-05-31 | 北京仿真中心 | 一种基于轻量级虚拟化架构的分布式云仿真方法与系统 |
CN106933635B (zh) * | 2017-03-15 | 2020-06-30 | 北京搜狐新媒体信息技术有限公司 | Docker镜像生成方法及Docker容器 |
CN106933635A (zh) * | 2017-03-15 | 2017-07-07 | 北京搜狐新媒体信息技术有限公司 | Docker镜像生成方法及Docker容器 |
CN107168765A (zh) * | 2017-07-07 | 2017-09-15 | 惠州Tcl移动通信有限公司 | 一种远程编译软件的方法及系统 |
CN107168765B (zh) * | 2017-07-07 | 2021-08-10 | 惠州Tcl移动通信有限公司 | 一种远程编译软件的方法及系统 |
CN107741851A (zh) * | 2017-10-12 | 2018-02-27 | 北京元心科技有限公司 | 编译系统的编译方法、装置及终端设备 |
CN107943485A (zh) * | 2017-12-11 | 2018-04-20 | 北京奇虎科技有限公司 | 一种补丁编译平台及补丁编译方法 |
CN107943485B (zh) * | 2017-12-11 | 2021-07-20 | 北京奇虎科技有限公司 | 一种补丁编译平台及补丁编译方法 |
CN108279976A (zh) * | 2017-12-26 | 2018-07-13 | 努比亚技术有限公司 | 一种编译资源调度方法、计算机及计算机可读存储介质 |
CN108279976B (zh) * | 2017-12-26 | 2021-11-19 | 努比亚技术有限公司 | 一种编译资源调度方法、计算机及计算机可读存储介质 |
CN110554876A (zh) * | 2018-05-31 | 2019-12-10 | 北京京东尚科信息技术有限公司 | 用于编译安卓工程的方法和装置 |
CN108984179A (zh) * | 2018-06-28 | 2018-12-11 | 北京奇安信科技有限公司 | 一种Linux下编译处理方法及装置 |
CN108984179B (zh) * | 2018-06-28 | 2022-08-02 | 奇安信科技集团股份有限公司 | 一种Linux下编译处理方法及装置 |
CN109324799A (zh) * | 2018-09-25 | 2019-02-12 | 珠海市筑巢科技有限公司 | 一种代码编译方法、计算机装置及计算机可读存储介质 |
CN110955431A (zh) * | 2018-09-27 | 2020-04-03 | 北京国双科技有限公司 | 编译环境的处理方法及装置 |
CN110955431B (zh) * | 2018-09-27 | 2024-02-13 | 北京国双科技有限公司 | 编译环境的处理方法及装置 |
CN109491662A (zh) * | 2018-10-31 | 2019-03-19 | 珠海市筑巢科技有限公司 | 代码打包方法、计算机装置及计算机可读存储介质、代码打包系统 |
CN111147429A (zh) * | 2018-11-06 | 2020-05-12 | 上海仪电(集团)有限公司中央研究院 | 一种项目研发环境部署系统 |
CN111147429B (zh) * | 2018-11-06 | 2022-10-04 | 上海仪电(集团)有限公司中央研究院 | 一种项目研发环境部署系统 |
CN109783195A (zh) * | 2019-01-16 | 2019-05-21 | 杭州趣链科技有限公司 | 一种基于容器的智能合约实时调试方法 |
CN114072765B (zh) * | 2019-07-16 | 2023-01-10 | 国际商业机器公司 | 用于基于容器的虚拟化系统的方法 |
CN114072765A (zh) * | 2019-07-16 | 2022-02-18 | 国际商业机器公司 | 用于基于容器的虚拟化系统的方法 |
CN110569035A (zh) * | 2019-08-08 | 2019-12-13 | 数字广东网络建设有限公司 | 软件开发项目的代码编译方法、装置、设备和存储介质 |
CN110795103A (zh) * | 2019-09-27 | 2020-02-14 | 北京五八信息技术有限公司 | 一种代码编译方法以及编译机 |
CN111381829A (zh) * | 2020-03-06 | 2020-07-07 | 北京达佳互联信息技术有限公司 | 在线编程方法、装置、电子设备和存储介质 |
CN111399865A (zh) * | 2020-04-21 | 2020-07-10 | 贵州新致普惠信息技术有限公司 | 一种基于容器技术自动构建目标文件的方法 |
CN111552508A (zh) * | 2020-04-29 | 2020-08-18 | 杭州数梦工场科技有限公司 | 应用程序版本构建方法、装置、电子设备 |
WO2022198308A1 (en) * | 2021-03-23 | 2022-09-29 | Blackberry Limited | Method and system for a customized local build environment image |
US11467825B1 (en) | 2021-03-23 | 2022-10-11 | Blackberry Limited | Method and system for a customized local build environment image |
US12045607B2 (en) | 2021-03-23 | 2024-07-23 | Blackberry Limited | Method and system for a customized local build environment image |
CN113434146A (zh) * | 2021-06-22 | 2021-09-24 | 青岛海尔科技有限公司 | 代码的编译方法、装置、存储介质及电子装置 |
CN113568755A (zh) * | 2021-08-04 | 2021-10-29 | 上海易景信息科技有限公司 | 一种分布式编译系统及分布式编译方法 |
CN113568755B (zh) * | 2021-08-04 | 2023-11-17 | 上海易景信息科技有限公司 | 一种分布式编译系统及分布式编译方法 |
WO2023051034A1 (zh) * | 2021-09-30 | 2023-04-06 | 中兴通讯股份有限公司 | 终端代码增量编译方法、系统、装置、服务器和存储介质 |
CN114157654A (zh) * | 2021-10-28 | 2022-03-08 | 杭州未名信科科技有限公司 | 一种集成电路协同设计系统和方法 |
CN114157654B (zh) * | 2021-10-28 | 2024-03-19 | 杭州未名信科科技有限公司 | 一种集成电路协同设计系统和方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106095523A (zh) | 一种实现安卓编译隔离的方法和系统 | |
CN106095522A (zh) | 一种实现分布式编译的方法和分布式编译系统 | |
CN111527488B (zh) | 基于区块链的数据同步的系统和方法 | |
Bean | Laravel 5 essentials | |
US8321856B2 (en) | Supplying software updates synchronously | |
AU2004200639B2 (en) | Integrating design, deployment, and management phases for systems | |
Vukotic et al. | Apache tomcat 7 | |
CN103713902B (zh) | 一种基于Android系统的BOA编译方法和系统 | |
US10503855B2 (en) | Methods and systems for system design automation (SDA) of mixed signal electronic circuitry including embedded software designs | |
EP1457877A2 (en) | Architecture for distributed computing system and automated design, deployment, and management of distributed applications | |
CN106055377A (zh) | 一种实现分布式编译的方法和分布式编译系统 | |
US20200167444A1 (en) | Systems and methods for software license management | |
US20200104120A1 (en) | Application release using integration into unified code system | |
CN106055376A (zh) | 一种实现ios分布式编译签名的方法和系统 | |
CN106775951A (zh) | 一种安卓应用的运行管理方法和装置 | |
Dunglas | Persistence in PHP with the Doctrine ORM | |
CN101963911A (zh) | 补丁生成方法和装置 | |
Demuth et al. | Automatically generating and adapting model constraints to support co-evolution of design models | |
US20160283291A1 (en) | Facilitating communication between software components that use middleware | |
US9753714B1 (en) | Software package management systems including multiple modules for supporting multiple software package types | |
CN104199774B (zh) | 程序安全测试方法和装置 | |
CN104331827B (zh) | 交易配置生成方法及交易匹配器 | |
Siriwardena | Maven Essentials | |
MacGregor | Magento PHP developer's guide | |
Abraham et al. | Using a virtual machine environment for developing, testing, and training for the UM-UKCA composition-climate model, using Unified Model version 10.9 and above |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20161109 |
|
RJ01 | Rejection of invention patent application after publication |