一种实现ios分布式编译签名的方法和系统的制作方法

文档序号:10686881阅读:281来源:国知局
一种实现ios分布式编译签名的方法和系统的制作方法
【专利摘要】本发明公开了一种实现IOS分布式编译签名的方法和系统。其中方法包括:通过前端页面接收用户提交的编译任务;所述编译任务为IOS编译任务,且每个编译任务中包括:待编译文件在代码服务器上的存储路径信息;将所接收到的编译任务调度到分布式的编译机集群中的相应编译机上,由相应编译机根据编译任务从代码服务器获取对应的待编译文件、对待编译文件进行编译得到编译结果文件,对编译结果文件进行签名操作得到签名后文件,将编译结果文件输出到公共数据库以及输出签名后的文件;接收各编译机反馈的编译信息,将编译任务以及与编译任务相关的用户信息和编译信息保存到回溯数据库中。该技术方案通过权限管理控制了编译的安全性。
【专利说明】
_种实现I OS分布式编译签名的方法和系统
技术领域
[0001]本发明涉及编译领域,具体涉及一种实现1S分布式编译签名的方法和系统。
【背景技术】
[0002]代码编译是将程序员编写的程序源码通过编译程序编译为机器可执行文件的过程。在软件开发公司中,往往不是由个人而是多人负责开发某个软件,因此在开发过程中会产生多个版本的代码,而最终软件只能由某个最终确定的版本编译生成,因此许多公司内都搭建了代码服务器进行代码的管理。然而现有技术中对于代码编译并没有较为合理的管理方法,由于任一台开发机上都有可能安装编译程序,对代码执行编译,导致最终生成的软件产品质量难以控制。
[0003]特别地,其中针对1S系统进行的项目,其代码的开发和编译过程更为复杂:苹果公司要求使用官方的Xcode软件进行开发和编译,进而需要给每个开发人员配备一套开发者证书,也就是说,开发人员一般都需要在自己的开发机上导入对应的证书才能正常完成代码编译。一方面,证书的价格不菲,例如个人证书和公司证书的价格为99美元/年,企业证书的价格为299美元/年;另一方面,由于证书必须分发到每位开发者的机器上。这样也就带来证书控制风险。

【发明内容】

[0004]鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的实现1S分布式编译签名的方法和系统。
[0005]依据本发明的一个方面,提供了一种实现1S分布式编译签名的方法,包括:
[0006]通过前端页面接收用户提交的编译任务;所述编译任务为1S编译任务,且每个编译任务中包括:待编译文件在代码服务器上的存储路径信息;
[0007]将所接收到的编译任务调度到分布式的编译机集群中的相应编译机上,由相应编译机根据编译任务从代码服务器获取对应的待编译文件、对待编译文件进行编译得到编译结果文件,对编译结果文件进行签名操作得到签名后文件,将编译结果文件输出到公共数据库以及输出签名后的文件;
[0008]接收各编译机反馈的编译信息,将编译任务以及与编译任务相关的用户信息和编译信息保存到回溯数据库中。
[0009]可选地,所述编译机集群中的各编译机为安装有MAC操作系统的终端设备。
[0010]可选地,所述对编译结果文件进行签名操作得到签名后文件包括:
[0011]从指定位置处获取1S签名证书,根据获取的1S签名证书对编译结果文件进行签名操作得到签名后的文件。
[0012]可选地,每个编译任务中还包括:编译环境要求信息;
[0013]所述将所接收到的编译任务调度到分布式的编译机集群中的相应编译机上包括:根据预先搜集的各编译机的编译环境信息,将所接收到的编译任务分配给符合该编译任务的编译环境要求的空闲的编译机。
[0014]可选地,所述根据预先搜集的各编译机的编译环境信息,将所接收到的编译任务分配给符合该编译任务的编译环境要求的空闲的编译机包括:
[0015]将所接收到编译任务放入编译任务池中;
[0016]每接收到一个编译机的任务查询信息,根据预先搜集的各编译机的编译环境信息确定该编译机的编译环境信息,从编译任务池中找出编译环境要求信息与该编译机的编译环境信息匹配的编译任务分配给该编译机;
[0017]其中,空闲的编译机每隔预设时间发送一次任务查询信息。
[0018]可选地,每个编译任务中还包括:用户代码权限信息;
[0019]该方法在将所接收到的编译任务调度到分布式的编译机集群中的相应编译机上之前,进一步包括:将编译任务中的用户代码权限信息发送给代码服务器进行校验,在校验通过后,在编译任务中的用户代码权限信息中打上校验通过标志,然后再将编译任务调度到分布式的编译机集群中的相应的编译机上;
[0020]所述由相应编译机根据编译任务从代码服务器获取对应的待编译文件包括:相应编译机根据编译任务中的打上校验通过标志的用户代码权限信息,从代码服务器获取对应的待编译文件。
[0021]可选地,该方法进一步包括:
[0022]编译机对待编译文件进行编译时如果需要编译公用资源,先到公共数据库中查询;
[0023]如果公共数据库中存在需要的编译公用资源,则从公共数据库获取;
[0024]如果公共数据库中不存在需要的编译公用资源,则从代码服务器获取该编译公用资源,并保存到公共数据库中。
[0025]可选地,该方法进一步包括:
[0026]生成对公共数据库的访问账户信息;
[0027]接收各编译机在每次启动时发送的获取/更新公共数据库的访问账户信息的请求,将所生成的相应访问账户信息发送给发送请求的编译机。
[0028]可选地,该方法进一步包括:
[0029]将编译机反馈的编译信息,通过前端页面展示给用户。
[0030]可选地,该方法进一步包括:
[0031 ]通过前端页面接收用户提交的查询信息;
[0032]根据查询信息从回溯数据库和/或公共数据库中获取相应的内容,并通过前端页面展示给用户。
[0033]可选地,所述编译信息包括如下中的一种或多种:
[0034]编译机在执行编译任务时的编译环境信息;
[0035]编译机在执行编译任务时记录的编译日志信息;
[0036]编译进度信息。
[0037]可选地,该方法进一步包括:
[0038]将签名后的文件发送到回溯数据库中保存一份。
[0039]依据本发明的另一方面,提供了一种1S分布式编译签名系统,包括:中心控制器、分布式的编译机集群、代码服务器、公共数据库和回溯数据库;
[0040]中心控制器,适于通过前端页面接收用户提交的编译任务,将所接收到的编译任务调度到分布式的编译机集群中的相应编译机上;其中,所述编译任务为1S编译任务,且每个编译任务中包括:待编译文件在代码服务器上的存储路径信息;
[0041]编译机,适于根据所分配的编译任务从代码服务器获取对应的待编译文件,对待编译文件进行编译得带编译结果文件,对编译结果文件进行签名操作得到签名后文件,将编译结果文件输出到公共数据库,输出签名后的文件,以及适于将编译信息反馈给中心控制器;
[0042]中心控制器,还适于接收各编译机反馈的编译信息,将编译任务以及与编译任务相关的用户信息和编译信息保存到回溯数据库中。
[0043]可选地,所述编译机集群中的各编译机为安装有MAC操作系统的终端设备。
[0044]可选地,编译机,适于从指定位置处获取1S签名证书,根据获取的1S签名证书对编译结果文件进行签名操作得到签名后的文件。
[0045]可选地,每个编译任务中还包括:编译环境要求信息;
[0046]所述中心控制器,适于根据预先搜集的各编译机的编译环境信息,将所接收到的编译任务分配给符合该编译任务的编译环境要求的空闲的编译机。
[0047]可选地,所述中心控制器,适于将所接收到编译任务放入编译任务池中;每接收到一个编译机的任务查询信息,根据预先搜集的各编译机的编译环境信息确定该编译机的编译环境信息,从编译任务池中找出编译环境要求信息与该编译机的编译环境信息匹配的编译任务分配给该编译机;
[0048]其中,空闲的编译机每隔预设时间向中心控制器发送一次任务查询信息。
[0049]可选地,每个编译任务中还包括:用户代码权限信息;
[0050]所述中心控制器,在将所接收到的编译任务调度到分布式的编译机集群中的相应编译机上之前,进一步适于将编译任务中的用户代码权限信息发送给代码服务器进行校验,在校验通过后,在编译任务中的用户代码权限信息中打上校验通过标志,然后再将编译任务调度到相应的编译机上;
[0051]编译机适于根据编译任务中的打上校验通过标志的用户代码权限信息,从代码服务器获取对应的待编译文件。
[0052]可选地,编译机,进一步适于在对待编译文件进行编译时,如果需要编译公用资源,先到公共数据库中查询;如果公共数据库中存在需要的编译公用资源,则从公共数据库获取;如果公共数据库中不存在需要的编译公用资源,则从代码服务器获取该编译公用资源,并保存到公共数据库中。
[0053]可选地,所述中心控制器,进一步适于生成对公共数据库的访问账户信息;接收各编译机在每次启动时发送的获取/更新公共数据库的访问账户信息的请求,将所生成的相应访问账户信息发送给发送请求的编译机。
[0054]可选地,所述中心控制器,进一步适于将编译机反馈的编译信息,通过前端页面展示给用户。
[0055]可选地,所述中心控制器,进一步适于通过前端页面接收用户提交的查询信息;
[0056]根据查询信息从回溯数据库和/或公共数据库中获取相应的内容,并通过前端页面展示给用户。
[0057]可选地,所述编译信息包括如下中的一种或多种:
[0058]编译机在执行编译任务时的编译环境信息;
[0059]编译机在执行编译任务时记录的编译日志信息;
[0060]编译进度信息。
[0061]可选地,编译机,进一步适于将签名后的文件发送到回溯数据库中保存一份。
[0062]由上述可知,本发明的技术方案在多台编译机上执行文件的编译,这些编译机构成了分布式的编译机集群,在通过前端页面接收到用户提交的编译任务后,从编译任务中提取待编译代码在代码服务器中的存储路径信息,将编译任务调度到合适的编译机后便可以根据存储路径信息获取待编译文件进行编译,并对编译结果文件进行签名操作后得到的签名后文件输出到公共数据库。各编译机在编译完成后生成编译反馈信息,将这些信息和与编译任务相关的用户信息和编译信息保存到回溯数据库中。该技术方案实现了针对1S系统开发的待编译文件的分布式编译,提供了独立、统一管理的编译环境,控制了成品质量;同时编译的结果文件保存在公共数据库中方便提取和调用;回溯数据库中的相关信息便于日后问题的回溯和复查,整体形成了可控、可溯的编译框架。
[0063]上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的【具体实施方式】。
【附图说明】
[0064]通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
[0065]图1示出了根据本发明一个实施例的一种实现1S分布式编译签名的方法的流程图;
[0066]图2示出了1S签名证书的访问权限设置的界面示意图;以及
[0067]图3示出了根据本发明一个实施例的一种1S分布式编译签名系统的结果示意图。
【具体实施方式】
[0068]下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
[0069]图1示出了根据本发明一个实施例的一种实现1S分布式编译签名的方法的流程图,如图1所示,该方法包括:
[0070]步骤S110,通过前端页面接收用户提交的编译任务;编译任务为1S编译任务,且每个编译任务中包括:待编译文件在代码服务器上的存储路径信息。
[0071]步骤S120,将所接收到的编译任务调度到分布式的编译机集群中的相应编译机上,由相应编译机根据编译任务从代码服务器获取对应的待编译文件、对待编译文件进行编译得到编译结果文件,对编译结果文件进行签名操作得到签名后文件,将编译结果文件输出到公共数据库以及输出签名后的文件。
[0072]步骤S130,接收各编译机反馈的编译信息,将编译任务以及与编译任务相关的用户信息和编译信息保存到回溯数据库中。
[0073]可见,图1所示的方法,在多台编译机上执行文件的编译,这些编译机构成了分布式的编译机集群,在通过前端页面接收到用户提交的编译任务后,从编译任务中提取待编译代码在代码服务器中的存储路径信息,将编译任务调度到合适的编译机后便可以根据存储路径信息获取待编译文件进行编译,并对编译结果文件进行签名操作后得到的签名后文件输出到公共数据库。各编译机在编译完成后生成编译反馈信息,将这些信息和与编译任务相关的用户信息和编译信息保存到回溯数据库中。该技术方案实现了针对1S系统开发的待编译文件的分布式编译,提供了独立、统一管理的编译环境,控制了成品质量;同时编译的结果文件保存在公共数据库中方便提取和调用;回溯数据库中的相关信息便于日后问题的回溯和复查,整体形成了可控、可溯的编译框架。
[0074]在本发明的一个实施例中,上述方法中,编译机集群中的各编译机为安装有MAC操作系统的终端设备。
[0075]也即是说,各编译机为安装有MAC操作系统的实机而非虚拟机。一方面,这需要在虚拟机上安装MAC操作系统,而MAC操作系统在虚拟机的表现上并不完美,编译效果不佳;另一方面,虚拟机编译得到的编译结果文件即使进行了合规的签名也容易被苹果应用商店退回,这样效率也很低下。因此在优选实施例中采用实机,即安装有MAC操作系统的终端设备作为编译机。
[0076]在本发明的一个实施例中,上述方法中,对编译结果文件进行签名操作得到签名后文件包括:从指定位置处获取1S签名证书,根据获取的1S签名证书对编译结果文件进行签名操作得到签名后的文件。
[0077]1S签名证书分为开发证书和发布证书两种,其中,开发证书用于开发测试,发布证书用于成品APP上线发布。一个有效的开发/发布证书包含2个文件:pl2文件(P12证书)和mobileprovis1n文件(描述文件)。现有技术中,P12证书和描述文件可以导入到任意一台开发机上,其中P12双击即可导入(导入时需要输入密码进行验证),描述文件可双击导入也可直接拷贝到开发机的/Users/% user %/Library/Mobil eDevice/Pro vis1ning Profile目录下。这样使用该开发机的开发人员就可以通过shell脚本方式进行代码编译。但是由于P12证书是可以被任意复制的,一旦被滥用,会导致企业核心资源泄漏以及会带来不可控风险,因此在企业的实际操作中,是不可能将发布证书安装到每台开发机上的。
[0078]因此在本实施例中,可以对编译过程进行统一管理,即将1S签名证书存放在指定位置;当待编译代码被编译为编译结果文件后,从指定位置处获取1S签名证书对其进行签名操作。或者,将一个或多个1S签名证书导入到编译机集群中的各开发机上,再在各开发机上分别设置进程对每个证书的访问权限。例如,图2示出了 1S签名证书的访问权限设置的界面示意图。
[0079]在本发明的一个实施例中,上述方法中,每个编译任务中还包括:编译环境要求信息;将所接收到的编译任务调度到分布式的编译机集群中的相应编译机上包括:根据预先搜集的各编译机的编译环境信息,将所接收到的编译任务分配给符合该编译任务的编译环境要求的空闲的编译机。
[0080]例如,根据开发项目的需求不同,编译过程中可以根据设置参数的不同生成不同的编译结果文件,例如要求生成的编译结果文件包含某特定类型的调试用文件。如果某个开发项目强制要求编译输出该文件,则可以在后台将该选项设置为无法在前端页面进行操作的默认设置项。
[0081]具体地,可以通过在开发机中预置编写好的shell脚本,并通过用户输入的编译任务配置信息调用该脚本启动Xcode软件实现编译。在一示例中,shell脚本中CodeSign = "iPhone Developer: t e s t bub i I d ( SWUW7 29UU2 ) 〃对应P I 2证书的开发者名称,Provis1nProf ile = 〃38c98f73-3ba8-42dd-be3a-e223d2287c38〃对应描述文件的 uuid,其中,uuid可以通过命令行/usr/libexec/PlistBuddy-c"Print UUID"/dev/stdin〈〈〈$(/usr/bin/security cms-D_i$l)($l为描述文件文件路径)计算出来。详细的shell脚本可以由开发人员根据需求进行编写,在此不再赘述。优选地,在编译过程中,通过shell启动记录父进程Pid,shelI执行结束后结束所有进程树上子进程,确保编译环境清理干净;当编译shell执行超时时,自动清理所有曾经创建过的进程列表。
[0082]在本发明的一个实施例中,上述方法中,根据预先搜集的各编译机的编译环境信息,将所接收到的编译任务分配给符合该编译任务的编译环境要求的空闲的编译机包括:将所接收到编译任务放入编译任务池中;每接收到一个编译机的任务查询信息,根据预先搜集的各编译机的编译环境信息确定该编译机的编译环境信息,从编译任务池中找出编译环境要求信息与该编译机的编译环境信息匹配的编译任务分配给该编译机;其中,空闲的编译机每隔预设时间发送一次任务查询信息。
[0083]例如,空闲的编译机A每隔5分钟发送一次任务查询信息,当接收到该信息后,从编译环境信息列表中确定该编译机A安装有iPhone SDK (Software Development Kit,软件开发工具包),可以编译iPhone用ipa,因此从编译任务池中确定了相应任务并分配给编译机A0
[0084]在本发明的一个实施例中,上述方法中,每个编译任务中还包括:用户代码权限信息;该方法在将所接收到的编译任务调度到分布式的编译机集群中的相应编译机上之前,进一步包括:将编译任务中的用户代码权限信息发送给代码服务器进行校验,在校验通过后,在编译任务中的用户代码权限信息中打上校验通过标志,然后再将编译任务调度到分布式的编译机集群中的相应的编译机上;由相应编译机根据编译任务从代码服务器获取对应的待编译文件包括:相应编译机根据编译任务中的打上校验通过标志的用户代码权限信息,从代码服务器获取对应的待编译文件。
[0085]—个开发项目在代码服务器中可能存在多个版本的待编译文件,同时在代码服务器中存在多个开发项目的待编译文件,为了安全控制,可以要求每个项目只有权限较高的用户可以访问并提取其中的待编译文件进行编译。在本实施例中,用户A通过前端页面提交编译任务时,需要在页面的相应位置输入用户代码权限信息,例如代码服务器的登录名和密码,则通过该用户代码权限信息先去代码服务器进行检验,通过后在编译任务中的用户代码权限信息中打上校验通过标志,再将编译任务调度至相应的编译机上,编译机编译时通过打上校验通过标志的用户代码权限信息,从代码服务器获取对应的待编译文件进行编译。
[0086]在本发明的一个实施例中,上述方法进一步包括:编译机对待编译文件进行编译时如果需要编译公用资源,先到公共数据库中查询;如果公共数据库中存在需要的编译公用资源,则从公共数据库获取;如果公共数据库中不存在需要的编译公用资源,则从代码服务器获取该编译公用资源,并保存到公共数据库中。
[0087]在对待编译文件进行编译时,经常会用到头文件等公用编译资源,这些资源是很多编译任务都需要用到的,如果每次都向代码服务器进行访问获取会大大浪费时间和资源,因此可以将这些公用资源存储到公共数据库中。如果编译任务所需的公共资源无法在公共数据库中找到,再从代码服务器进行获取,在获取到该公共资源后可以将其存至公共数据库,这样其他编译任务如果需要该公共资源就不必到代码服务器进行获取,节约了时间,效率更高。
[0088]在本发明的一个实施例中,上述方法进一步包括:生成对公共数据库的访问账户信息;接收各编译机在每次启动时发送的获取/更新公共数据库的访问账户信息的请求,将所生成的相应访问账户信息发送给发送请求的编译机。
[0089]由于公共数据库中包含大量的从代码服务器获取的内容,因此如果不对公共数据库的访问权限加以限制,很容易引起安全问题,因此在本实施例中,需要生成对公共数据库的访问账户信息,使得编译机根据获取.更新的访问账户信息来访问公共数据库。
[0090]在本发明的一个实施例中,上述方法进一步包括:将编译机反馈的编译信息,通过前端页面展示给用户。具体地,编译信息包括如下中的一种或多种:编译机在执行编译任务时的编译环境信息;编译机在执行编译任务时记录的编译日志信息;编译进度信息。用户可以根据这些信息了解到编译执行的状况,方便进行中断、回滚等操作。
[0091]在本发明的一个实施例中,上述方法进一步包括:通过前端页面接收用户提交的查询信息;根据查询信息从回溯数据库和/或公共数据库中获取相应的内容,并通过前端页面展示给用户。
[0092]其中,提交查询信息的过程与编译过程可以是相互独立的,例如在提交编译任务前,查看公共数据库中是否包含所需的头文件,又例如,在编译结果文件出现问题需要排查时,访问回溯数据库调取之前执行过的编译任务等信息。
[0093]在本发明的一个实施例中,上述方法进一步包括:将签名后的文件发送到回溯数据库中保存一份。签名后的文件保存到回溯数据库中,例如在产品出现问题后,可以从数据库中提取相应的文件进行调试检查。
[0094]图3示出了根据本发明一个实施例的一种1S分布式编译签名系统的结果示意图,如图3所示,该编译系统包括:中心控制器310、分布式的编译机320集群、代码服务器330、公共数据库340和回溯数据库350。
[0095]中心控制器310,适于通过前端页面接收用户提交的编译任务,将所接收到的编译任务调度到分布式的编译机320集群中的相应编译机320上;其中,编译任务为1S编译任务,且每个编译任务中包括:待编译文件在代码服务器330上的存储路径信息。
[0096]编译机320,适于根据所分配的编译任务从代码服务器330获取对应的待编译文件,对待编译文件进行编译得带编译结果文件,对编译结果文件进行签名操作得到签名后文件,将编译结果文件输出到公共数据库340,输出签名后的文件,以及适于将编译信息反馈给中心控制器310。
[0097]中心控制器310,还适于接收各编译机320反馈的编译信息,将编译任务以及与编译任务相关的用户信息和编译信息保存到回溯数据库350中。
[0098]可见,图3所示的系统,在多台编译机上执行文件的编译,这些编译机构成了分布式的编译机集群,在通过前端页面接收到用户提交的编译任务后,从编译任务中提取待编译代码在代码服务器中的存储路径信息,将编译任务调度到合适的编译机后便可以根据存储路径信息获取待编译文件进行编译,并对编译结果文件进行签名操作后得到的签名后文件输出到公共数据库。各编译机在编译完成后生成编译反馈信息,将这些信息和与编译任务相关的用户信息和编译信息保存到回溯数据库中。该技术方案实现了针对1S系统开发的待编译文件的分布式编译,提供了独立、统一管理的编译环境,控制了成品质量;同时编译的结果文件保存在公共数据库中方便提取和调用;回溯数据库中的相关信息便于日后问题的回溯和复查,整体形成了可控、可溯的编译框架。
[0099]在本发明的一个实施例中,图3所示的系统中,编译机320集群中的各编译机320为安装有MAC操作系统的终端设备。
[0100]在本发明的一个实施例中,图3所示的系统中,编译机320,适于从指定位置处获取1S签名证书,根据获取的1S签名证书对编译结果文件进行签名操作得到签名后的文件。
[0101]在本发明的一个实施例中,图3所示的系统中,每个编译任务中还包括:编译环境要求信息;中心控制器310,适于根据预先搜集的各编译机320的编译环境信息,将所接收到的编译任务分配给符合该编译任务的编译环境要求的空闲的编译机320。
[0102]在本发明的一个实施例中,上述系统中,中心控制器310,适于将所接收到编译任务放入编译任务池中;每接收到一个编译机320的任务查询信息,根据预先搜集的各编译机320的编译环境信息确定该编译机320的编译环境信息,从编译任务池中找出编译环境要求信息与该编译机320的编译环境信息匹配的编译任务分配给该编译机320;其中,空闲的编译机320每隔预设时间向中心控制器310发送一次任务查询信息。
[0103]在本发明的一个实施例中,图3所示的系统中,每个编译任务中还包括:用户代码权限信息;中心控制器310,在将所接收到的编译任务调度到分布式的编译机320集群中的相应编译机320上之前,进一步适于将编译任务中的用户代码权限信息发送给代码服务器330进行校验,在校验通过后,在编译任务中的用户代码权限信息中打上校验通过标志,然后再将编译任务调度到相应的编译机320上;编译机320适于根据编译任务中的打上校验通过标志的用户代码权限信息,从代码服务器获取对应的待编译文件。
[0104]在本发明的一个实施例中,图3所示的系统中,编译机320,进一步适于在对待编译文件进行编译时,如果需要编译公用资源,先到公共数据库340中查询;如果公共数据库340中存在需要的编译公用资源,则从公共数据库340获取;如果公共数据库340中不存在需要的编译公用资源,则从代码服务器获取该编译公用资源,并保存到公共数据库340中。
[0105]在本发明的一个实施例中,图3所示的系统中,中心控制器310,进一步适于生成对公共数据库340的访问账户信息;接收各编译机320在每次启动时发送的获取/更新公共数据库340的访问账户信息的请求,将所生成的相应访问账户信息发送给发送请求的编译机320。
[0106]在本发明的一个实施例中,图3所示的系统中,中心控制器310,进一步适于将编译机320反馈的编译信息,通过前端页面展示给用户。
[0107]在本发明的一个实施例中,图3所示的系统中,中心控制器310,进一步适于通过前端页面接收用户提交的查询信息;根据查询信息从回溯数据库350和/或公共数据库340中获取相应的内容,并通过前端页面展示给用户。
[0108]在本发明的一个实施例中,图3所示的系统中,编译信息包括如下中的一种或多种:编译机320在执行编译任务时的编译环境信息;编译机320在执行编译任务时记录的编译日志信息;编译进度信息。
[0109]在本发明的一个实施例中,上述系统中,编译机320,进一步适于将签名后的文件发送到回溯数据库350中保存一份。
[0110]需要说明的是,上述各系统实施例的具体实现方式与前述对应方法实施例的【具体实施方式】相同,在此不再赘述。
[0111]综上所述,本发明的技术方案,在多台编译机上执行文件的编译,这些编译机构成了分布式的编译机集群,在通过前端页面接收到用户提交的编译任务后,从编译任务中提取待编译代码在代码服务器中的存储路径信息,将编译任务调度到合适的编译机后便可以根据存储路径信息获取待编译文件进行编译,并对编译结果文件进行签名操作后得到的签名后文件输出到公共数据库。各编译机在编译完成后生成编译反馈信息,将这些信息和与编译任务相关的用户信息和编译信息保存到回溯数据库中。该技术方案实现了针对1S系统开发的待编译文件的分布式编译,提供了独立、统一管理的编译环境,控制了成品质量;同时编译的结果文件保存在公共数据库中方便提取和调用;回溯数据库中的相关信息便于日后问题的回溯和复查,整体形成了可控、可溯的编译框架。
[0112]需要说明的是:
[0113]在此提供的算法和显示不与任何特定计算机、虚拟装置或者其它设备固有相关。各种通用装置也可以与基于在此的示教一起使用。根据上面的描述,构造这类装置所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
[0114]在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
[0115]类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循【具体实施方式】的权利要求书由此明确地并入该【具体实施方式】,其中每个权利要求本身都作为本发明的单独实施例。
[0116]本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
[0117]此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
[0118]本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的1S分布式编译签名系统中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
[0119]应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
[0120]本发明的实施例公开了Al、一种实现1S分布式编译签名的方法,其中,该方法包括:
[0121]通过前端页面接收用户提交的编译任务;所述编译任务为1S编译任务,且每个编译任务中包括:待编译文件在代码服务器上的存储路径信息;
[0122]将所接收到的编译任务调度到分布式的编译机集群中的相应编译机上,由相应编译机根据编译任务从代码服务器获取对应的待编译文件、对待编译文件进行编译得到编译结果文件,对编译结果文件进行签名操作得到签名后文件,将编译结果文件输出到公共数据库以及输出签名后的文件;
[0123]接收各编译机反馈的编译信息,将编译任务以及与编译任务相关的用户信息和编译信息保存到回溯数据库中。
[0124]A2、如Al所述的方法,其中,所述编译机集群中的各编译机为安装有MAC操作系统的终端设备。
[0125]A3、如Al所述的方法,其中,所述对编译结果文件进行签名操作得到签名后文件包括:
[0126]从指定位置处获取1S签名证书,根据获取的1S签名证书对编译结果文件进行签名操作得到签名后的文件。
[0127]A4、如Al所述的方法,其中,
[0128]每个编译任务中还包括:编译环境要求信息;
[0129]所述将所接收到的编译任务调度到分布式的编译机集群中的相应编译机上包括:根据预先搜集的各编译机的编译环境信息,将所接收到的编译任务分配给符合该编译任务的编译环境要求的空闲的编译机。
[0130]A5、如A4所述的方法,其中,所述根据预先搜集的各编译机的编译环境信息,将所接收到的编译任务分配给符合该编译任务的编译环境要求的空闲的编译机包括:
[0131 ]将所接收到编译任务放入编译任务池中;
[0132]每接收到一个编译机的任务查询信息,根据预先搜集的各编译机的编译环境信息确定该编译机的编译环境信息,从编译任务池中找出编译环境要求信息与该编译机的编译环境信息匹配的编译任务分配给该编译机;
[0133]其中,空闲的编译机每隔预设时间发送一次任务查询信息。
[0134]A6、如Al所述的方法,其中,
[0135]每个编译任务中还包括:用户代码权限信息;
[0136]该方法在将所接收到的编译任务调度到分布式的编译机集群中的相应编译机上之前,进一步包括:将编译任务中的用户代码权限信息发送给代码服务器进行校验,在校验通过后,在编译任务中的用户代码权限信息中打上校验通过标志,然后再将编译任务调度到分布式的编译机集群中的相应的编译机上;
[0137]所述由相应编译机根据编译任务从代码服务器获取对应的待编译文件包括:相应编译机根据编译任务中的打上校验通过标志的用户代码权限信息,从代码服务器获取对应的待编译文件。
[0138]A7、如Al所述的方法,该方法进一步包括:
[0139]编译机对待编译文件进行编译时如果需要编译公用资源,先到公共数据库中查询;
[0140]如果公共数据库中存在需要的编译公用资源,则从公共数据库获取;
[0141]如果公共数据库中不存在需要的编译公用资源,则从代码服务器获取该编译公用资源,并保存到公共数据库中。
[0142]A8、如Al所述的方法,其中,该方法进一步包括:
[0143]生成对公共数据库的访问账户信息;
[0144]接收各编译机在每次启动时发送的获取/更新公共数据库的访问账户信息的请求,将所生成的相应访问账户信息发送给发送请求的编译机。
[0145]A9、如Al所述的方法,其中,该方法进一步包括:
[0146]将编译机反馈的编译信息,通过前端页面展示给用户。
[0147]A10、如Al所述的方法,其中,该方法进一步包括:
[0148]通过前端页面接收用户提交的查询信息;
[0149]根据查询信息从回溯数据库和/或公共数据库中获取相应的内容,并通过前端页面展示给用户。
[0150]All、如Al所述的方法,其中,所述编译信息包括如下中的一种或多种:[0151 ]编译机在执行编译任务时的编译环境信息;
[0152]编译机在执行编译任务时记录的编译日志信息;
[0153]编译进度信息。
[0154]Al 2、如Al-Al I中任一项所述的方法,其中,该方法进一步包括:
[0155]将签名后的文件发送到回溯数据库中保存一份。
[0156]本发明的实施例还公开了B13、一种1S分布式编译签名系统,其中,该编译系统包括:中心控制器、分布式的编译机集群、代码服务器、公共数据库和回溯数据库;
[0157]中心控制器,适于通过前端页面接收用户提交的编译任务,将所接收到的编译任务调度到分布式的编译机集群中的相应编译机上;其中,所述编译任务为1S编译任务,且每个编译任务中包括:待编译文件在代码服务器上的存储路径信息;
[0158]编译机,适于根据所分配的编译任务从代码服务器获取对应的待编译文件,对待编译文件进行编译得带编译结果文件,对编译结果文件进行签名操作得到签名后文件,将编译结果文件输出到公共数据库,输出签名后的文件,以及适于将编译信息反馈给中心控制器;
[0159]中心控制器,还适于接收各编译机反馈的编译信息,将编译任务以及与编译任务相关的用户信息和编译信息保存到回溯数据库中。
[0160]B14、如B13所述的系统,其中,所述编译机集群中的各编译机为安装有MAC操作系统的终端设备。
[0161]B15、如B13所述的系统,其中,
[0162]编译机,适于从指定位置处获取1S签名证书,根据获取的1S签名证书对编译结果文件进行签名操作得到签名后的文件。
[0163]B16、如B13所述的系统,其中,
[0164]每个编译任务中还包括:编译环境要求信息;
[0165]所述中心控制器,适于根据预先搜集的各编译机的编译环境信息,将所接收到的编译任务分配给符合该编译任务的编译环境要求的空闲的编译机。
[0166]B17、如B16所述的系统,其中,
[0167]所述中心控制器,适于将所接收到编译任务放入编译任务池中;每接收到一个编译机的任务查询信息,根据预先搜集的各编译机的编译环境信息确定该编译机的编译环境信息,从编译任务池中找出编译环境要求信息与该编译机的编译环境信息匹配的编译任务分配给该编译机;
[0168]其中,空闲的编译机每隔预设时间向中心控制器发送一次任务查询信息。
[0169]B18、如B13所述的系统,其中,
[0170]每个编译任务中还包括:用户代码权限信息;
[0171]所述中心控制器,在将所接收到的编译任务调度到分布式的编译机集群中的相应编译机上之前,进一步适于将编译任务中的用户代码权限信息发送给代码服务器进行校验,在校验通过后,在编译任务中的用户代码权限信息中打上校验通过标志,然后再将编译任务调度到相应的编译机上;
[0172]编译机适于根据编译任务中的打上校验通过标志的用户代码权限信息,从代码服务器获取对应的待编译文件。
[0173]B19、如B13所述的系统,其中,
[0174]编译机,进一步适于在对待编译文件进行编译时,如果需要编译公用资源,先到公共数据库中查询;如果公共数据库中存在需要的编译公用资源,则从公共数据库获取;如果公共数据库中不存在需要的编译公用资源,则从代码服务器获取该编译公用资源,并保存到公共数据库中。
[0175]B20、如B13所述的系统,其中,
[0176]所述中心控制器,进一步适于生成对公共数据库的访问账户信息;接收各编译机在每次启动时发送的获取/更新公共数据库的访问账户信息的请求,将所生成的相应访问账户信息发送给发送请求的编译机。
[0177]B21、如B13所述的系统,其中,
[0178]所述中心控制器,进一步适于将编译机反馈的编译信息,通过前端页面展示给用户。
[0179]B22、如B13所述的系统,其中,
[0180]所述中心控制器,进一步适于通过前端页面接收用户提交的查询信息;根据查询信息从回溯数据库和/或公共数据库中获取相应的内容,并通过前端页面展示给用户。
[0181]B23、如B13所述的系统,其中,所述编译信息包括如下中的一种或多种:
[0182]编译机在执行编译任务时的编译环境信息;
[0183]编译机在执行编译任务时记录的编译日志信息;
[0184]编译进度信息。
[0185]B24、如B13-B23中任一项所述的系统,其中,
[0186]编译机,进一步适于将签名后的文件发送到回溯数据库中保存一份。
【主权项】
1.一种实现1S分布式编译签名的方法,其中,该方法包括: 通过前端页面接收用户提交的编译任务;所述编译任务为1S编译任务,且每个编译任务中包括:待编译文件在代码服务器上的存储路径信息; 将所接收到的编译任务调度到分布式的编译机集群中的相应编译机上,由相应编译机根据编译任务从代码服务器获取对应的待编译文件、对待编译文件进行编译得到编译结果文件,对编译结果文件进行签名操作得到签名后文件,将编译结果文件输出到公共数据库以及输出签名后的文件; 接收各编译机反馈的编译信息,将编译任务以及与编译任务相关的用户信息和编译信息保存到回溯数据库中。2.如权利要求1所述的方法,其中,所述编译机集群中的各编译机为安装有MAC操作系统的终端设备。3.如权利要求1所述的方法,其中,所述对编译结果文件进行签名操作得到签名后文件包括: 从指定位置处获取1S签名证书,根据获取的1S签名证书对编译结果文件进行签名操作得到签名后的文件。4.如权利要求1所述的方法,其中, 每个编译任务中还包括:编译环境要求信息; 所述将所接收到的编译任务调度到分布式的编译机集群中的相应编译机上包括:根据预先搜集的各编译机的编译环境信息,将所接收到的编译任务分配给符合该编译任务的编译环境要求的空闲的编译机。5.如权利要求4所述的方法,其中,所述根据预先搜集的各编译机的编译环境信息,将所接收到的编译任务分配给符合该编译任务的编译环境要求的空闲的编译机包括: 将所接收到编译任务放入编译任务池中; 每接收到一个编译机的任务查询信息,根据预先搜集的各编译机的编译环境信息确定该编译机的编译环境信息,从编译任务池中找出编译环境要求信息与该编译机的编译环境信息匹配的编译任务分配给该编译机; 其中,空闲的编译机每隔预设时间发送一次任务查询信息。6.—种1S分布式编译签名系统,其中,该编译系统包括:中心控制器、分布式的编译机集群、代码服务器、公共数据库和回溯数据库; 中心控制器,适于通过前端页面接收用户提交的编译任务,将所接收到的编译任务调度到分布式的编译机集群中的相应编译机上;其中,所述编译任务为1S编译任务,且每个编译任务中包括:待编译文件在代码服务器上的存储路径信息; 编译机,适于根据所分配的编译任务从代码服务器获取对应的待编译文件,对待编译文件进行编译得带编译结果文件,对编译结果文件进行签名操作得到签名后文件,将编译结果文件输出到公共数据库,输出签名后的文件,以及适于将编译信息反馈给中心控制器; 中心控制器,还适于接收各编译机反馈的编译信息,将编译任务以及与编译任务相关的用户信息和编译信息保存到回溯数据库中。7.如权利要求6所述的系统,其中,所述编译机集群中的各编译机为安装有MAC操作系统的终端设备。8.如权利要求6所述的系统,其中, 编译机,适于从指定位置处获取1S签名证书,根据获取的1S签名证书对编译结果文件进行签名操作得到签名后的文件。9.如权利要求6所述的系统,其中, 每个编译任务中还包括:编译环境要求信息; 所述中心控制器,适于根据预先搜集的各编译机的编译环境信息,将所接收到的编译任务分配给符合该编译任务的编译环境要求的空闲的编译机。10.如权利要求9所述的系统,其中, 所述中心控制器,适于将所接收到编译任务放入编译任务池中;每接收到一个编译机的任务查询信息,根据预先搜集的各编译机的编译环境信息确定该编译机的编译环境信息,从编译任务池中找出编译环境要求信息与该编译机的编译环境信息匹配的编译任务分配给该编译机; 其中,空闲的编译机每隔预设时间向中心控制器发送一次任务查询信息。
【文档编号】G06F9/45GK106055376SQ201610391164
【公开日】2016年10月26日
【申请日】2016年6月3日
【发明人】张 杰, 黄威, 王玉琨
【申请人】北京奇虎科技有限公司, 奇智软件(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1