持续集成方法、基于分布式编译的持续集成方法及系统与流程

文档序号:21970648发布日期:2020-08-25 19:00阅读:135来源:国知局
持续集成方法、基于分布式编译的持续集成方法及系统与流程

本发明涉及软件开发技术领域,特别是一种持续集成方法、基于分布式编译的持续集成方法及系统。



背景技术:

在游戏引擎产品的开发中,相关的编辑器和引擎sdk(softwaredevelopmentkit,软件开发工具包)由于需要快速迭代、敏捷开发,因此要经常进行版本的更新,并由专人进行版本的维护,手动更新代码,编译和打包,会涉及到windows、android、ios三个平台的工作,在自己的机器上进行项目的编译。

大规模游戏项目用virsualstudio,androidstudio,xcode进行编译时,全程需要人工操作,还需进行资源转换,项目打包,拷贝,技术要求单一,耗费时间长。在修改一些核心文件的时候,由于有很多依赖关系,完成一次单机编译往往要耗费40分钟以上的时间,而从整体上分析项目组的所有算力时又发现大部分机器只在少数时候处于高负载条件下,其余时间处于空闲状态。



技术实现要素:

鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的持续集成方法、基于分布式编译的持续集成方法及系统。

根据本发明实施例的一方面,提供了一种持续集成方法,包括:

定时获取更新代码,采用静态代码检查工具对更新代码进行静态代码检查;

通过预置执行脚本对检查成功的更新代码进行翻译得到针对不同系统平台的待编译文件;

对不同系统平台的待编译文件分别进行编译得到对应的编译结果;

将所述编译结果中的可执行文件按照不同系统平台分别打包,将打包后的可执行文件上传到指定服务器。

根据本发明实施例的另一方面,还提供了一种基于分布式编译的持续集成方法,包括:

定时获取更新代码,采用静态代码检查工具对更新代码进行静态代码检查;

通过预置执行脚本对检查成功的更新代码进行翻译得到针对不同系统平台的待编译文件;

对不同系统平台中指定系统平台的待编译文件进行分布式编译,且对不同系统平台中其他系统平台的待编译文件分别进行编译,得到对应的编译结果;

将所述编译结果中的可执行文件按照不同系统平台分别打包,将打包后的可执行文件上传到指定服务器。

根据本发明实施例的又一方面,还提供了一种持续集成系统,包括持续集成服务器和指定服务器,

所述持续集成服务器定时获取更新代码,采用静态代码检查工具对更新代码进行静态代码检查;

所述持续集成服务器通过预置执行脚本对检查成功的更新代码进行翻译得到针对不同系统平台的待编译文件;

所述持续集成服务器对不同系统平台的待编译文件分别进行编译得到对应的编译结果;

所述持续集成服务器将所述编译结果中的可执行文件按照不同系统平台分别打包,将打包后的可执行文件上传到所述指定服务器。

根据本发明实施例的又一方面,还提供了一种基于分布式编译的持续集成系统,包括持续集成服务器、分布式编译子系统、指定服务器,其中

所述持续集成服务器定时获取更新代码,采用静态代码检查工具对更新代码进行静态代码检查;

所述持续集成服务器通过预置执行脚本对检查成功的更新代码进行翻译得到针对不同系统平台的待编译文件;

所述持续集成服务器通知分布式编译子系统对不同系统平台中指定系统平台的待编译文件进行分布式编译,且所述持续集成服务器对不同系统平台中其他系统平台的待编译文件分别进行编译,得到对应的编译结果;

所述持续集成服务器将所述编译结果中的可执行文件按照不同系统平台分别打包,将打包后的可执行文件上传到指定服务器。

根据本发明实施例的另一方面,还提供了一种计算机存储介质,所述计算机存储介质存储有计算机程序代码,当所述计算机程序代码在计算设备上运行时,导致所述计算设备执行上文任意实施例中的持续集成方法、基于分布式编译的持续集成方法。

根据本发明实施例的另一方面,还提供了一种计算设备,包括:处理器;存储有计算机程序代码的存储器;当所述计算机程序代码被所述处理器运行时,导致所述计算设备执行上文任意实施例中的持续集成方法、基于分布式编译的持续集成方法。

本发明实施例采用静态代码检查工具对更新代码进行静态代码检查,可以尽早地发现代码的编码错误,以提高后续的编译效率和持续集成效率。采用本发明实施例的持续集成方案可以针对不同系统平台自动完成较为繁琐的程序更新工作,不仅大大节省了人力成本,显著提高了产品项目的构建效率,还可以在保证数据安全性的基础上完善项目组整体工作流程。进一步地,对指定系统平台采用分布式编译方式,通过将待编译的文件分发至多个分布式编译机器上进行分布式编译,不仅可以有效地缩短编译时长,也解决了部分编译机器由于长期处于空闲状态而无法得到充分利用的问题,合理的利用了编译机器资源。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1示出了根据本发明一实施例的持续集成方法的流程示意图;

图2示出了根据本发明一实施例的基于分布式编译的持续集成方法的流程示意图;

图3示出了根据本发明一实施例的分布式编译过程的示意图;

图4示出了根据本发明一实施例的持续集成系统的结构示意图;

图5示出了根据本发明另一实施例的持续集成系统的结构示意图;

图6示出了根据本发明一实施例的基于分布式编译的持续集成系统的结构示意图;

图7示出了根据本发明另一实施例的基于分布式编译的持续集成系统的结构示意图。

具体实施方式

下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。

为解决上述技术问题,本发明实施例提供了一种持续集成方法,图1示出了根据本发明一实施例的持续集成方法的流程示意图。参见图1,持续集成方法包括以下步骤s102至步骤s108。

步骤s102,定时获取更新代码,采用静态代码检查工具对更新代码进行静态代码检查。

步骤s104,通过预置执行脚本对检查成功的更新代码进行翻译得到针对不同系统平台的待编译文件。

本发明实施例中,不同系统平台可以包括windows系统平台、android系统平台及ios系统平台等。

步骤s106,对不同系统平台的待编译文件分别进行编译得到对应的编译结果。

本发明实施例的编译结果中可以包含编译成功的可执行文件,也可以包含编译未成功的编译错误信息。

步骤s108,将编译结果中的可执行文件按照不同系统平台分别打包,将打包后的可执行文件上传到指定服务器。

本发明实施例的持续集成方案可以针对不同系统平台自动完成较为繁琐的程序更新工作,不仅大大节省了人力成本,显著提高了产品项目的构建效率,还可以在保证数据安全性的基础上完善项目组整体工作流程。

参见上文步骤s102,在本发明一实施例中,开发人员的计算机中存储有指定文件夹,该指定文件夹包含游戏开发版本的代码文件,当开发人员修改代码进行版本更新时,指定文件夹中的代码文件更新为新版本的代码文件,从而可以将新版本的代码文件中的更新代码以增量上传方式自动上传至版本控制服务器的版本库中。进而在定时获取更新代码的过程中,可以从版本控制服务器的版本库中定时获取更新代码。这里对于定时的具体时间间隔本发明实施例不作具体的限定。

在本发明一实施例中,采用增量上传方式将更新代码上传至版本控制服务器的时,可以将新版本的代码文件分成多个代码块,然后通过版本控制服务器确定本地已保存版本的代码文件中未包含的代码块,以请求上传本地未包含的代码块。具体的,在指定文件夹中将新版本的代码文件按照预设大小分成代码内容不重叠的代码块,并计算每个代码块的哈希值,将新版本的代码文件的每个代码块的哈希值上传到版本控制服务器。版本控制服务器根据代码块的哈希值确定出本地已保存版本的代码文件中未包含的代码块后,将未包含的代码块的哈希值反馈至开发人员的计算机。从而开发人员的计算机可以将指定文件夹中与反馈哈希值对应的代码块(即更新代码部分)上传至版本控制服务器的版本库中。由此,在指定文件夹中的代码文件版本更新后便可以有效上传至版本控制服务器,通过上传更新代码部分不仅可以有效减少版本控制服务器中版本库的存储空间,还可以提高更新代码的上传效率。

在本发明一实施例中,在采用静态代码检查工具(codechecker)对更新代码进行静态代码检查之后,还可以将静态代码的检查结果上传至指定服务器,指定服务器可以接收对静态代码的检查结果的访问,具体可以由更新代码的本项目程序人员或其他相关项目程序人员对静态代码的检查结果进行访问。另外,本发明实施例对于静态代码检查工具的具体类型也不作具体限定,其可以实现c++代码检测即可。

在本发明一实施例中,采用静态代码检查工具对更新代码进行静态代码检查时,还可以将包含更新代码的文件上传到不同服务器,通过不同服务器采用静态代码检查工具对文件中的更新代码进行静态代码检查,将静态代码的检查结果下载更新到不同服务器的文件中,并接收不同服务器反馈的更新代码的静态代码检查结果。不同服务器的文件中的静态代码的检查结果可以由更新代码的本项目程序人员或其他相关项目程序人员对静态代码的检查结果进行访问。

在本发明实施例中,在将包含更新代码的文件上传到不同服务器时,可以先确定出更新代码实现的功能,然后依据更新代码实现的功能选择与该功能对应的服务器。例如,从包含更新代码的文件中确定出两种不同功能的更新代码,那么可以为这两种不同功能的更新代码分别选择与各功能对应的服务器。然后,从包含更新代码的文件分别提取出两类不同功能的更新代码并得到两个更新代码子文件。进而,将两个更新代码子文件分别上传到对应选择的服务器中,以由对应服务器接收到的相应功能更新代码的子文件后利用静态代码检查工具对更新代码进行静态代码检查,并且静态代码的检查结果会更新到对应服务器的更新代码子文件中。

在该实施例中,若从包含更新代码的文件中确定出一种功能的更新代码,且更新代码中的各部分代码实现不同子功能,本发明实施例可以将包含更新代码的文件划分成多个代码子文件,且划分后的代码子文件中的更新代码能够实现对应的完整子功能。从而将多个代码子文件分别上传到与更新代码功能对应的多个服务器,由各服务器对接收到的代码子文件中的更新代码部分进行静态代码检查,通过多个服务器并行的对更新代码进行静态代码检查,能够有效提高更新代码的静态代码检查效率。

参见上文步骤s104,在本发明一实施例中,通过预置执行脚本对检查成功的更新代码进行翻译得到针对不同系统平台的待编译文件后,还可以将翻译得到的针对不同系统平台的待编译文件上传至版本控制服务器,在版本控制服务器中对不同系统平台的待编译文件进行同步,以实现对不同系统版本的同步。目前有三种比较常用的图形api(applicationprogramminginterface,应用程序接口),分别是directx、opengl、metal,它们分别有自己的着色器语言hlsl、glsl和msl。对于引擎中渲染部分代码会编写hlsl,另外两种自动翻译。在本发明实施例中,可以通过预置执行脚本对不同图形库的渲染代码的翻译,例如将hlsl翻译至metal。

参见上文步骤s106,在本发明一实施例中,对不同系统平台的待编译文件分别进行编译时均会经过预处理、编译、汇编及链接的过程。

本发明实施例的待编译文件即待编译的源文件,源文件为.c/.cpp文件。c++程序编译的具体过程包括:首先,将.c/.cpp文件通过c预处理器生成.i中间文件。然后,将.i中间文件和.c/.cpp文件输入c编译器以生成.s汇编文件。进而,将.s汇编文件通过汇编器生成.o目标文件。最后,将.o文件进行链接,从而生成可执行文件。

在本发明一实施例中,对不同系统平台的待编译文件分别进行编译得到对应的编译结果包含了编译成功的可执行文件或编译错误信息。若编译成功,可以将编译结果中的可执行文件按照不同系统平台分别打包,并将打包后的可执行文件上传到指定服务器。若存在至少一个系统平台的待编译文件编译不成功,那么可以将对应编译结果包含的编译错误信息告知同一内网环境中的终端。告知方式可以是将编译错误信息携带至通知消息中,以通知消息的形式发送至终端。本发明实施例的终端可以是移动终端,如手机,平板电脑等,也可以是pc终端,如台式电脑等等。

基于同一发明构思,本发明实施例还提供了一种基于分布式编译的持续集成方法,图2示出了根据本发明一实施例的持续集成方法的流程示意图。参见图2,基于分布式编译的持续集成方法包括以下步骤s202至步骤s208。

步骤s202,定时获取更新代码,采用静态代码检查工具对更新代码进行静态代码检查。

步骤s204,通过预置执行脚本对检查成功的更新代码进行翻译得到针对不同系统平台的待编译文件。

步骤s206,对不同系统平台中指定系统平台的待编译文件进行分布式编译,且对不同系统平台中其他系统平台的待编译文件分别进行编译,得到对应的编译结果。

步骤s208,将编译结果中的可执行文件按照不同系统平台分别打包,将打包后的可执行文件上传到指定服务器。

本发明实施例对指定系统平台采用分布式编译方式,通过将待编译的文件分发至多个分布式编译机器上进行分布式编译,不仅可以有效地缩短编译时长,也解决了部分编译机器长期处于空闲状态而无法得到充分利用的问题。

在本发明实施例中,对于步骤s202至步骤s204的具体介绍可以参见上文实施例,此处不再进行赘述。

参见上文步骤s206,本发明实施例的不同系统平台可以包含windows系统平台、android系统平台、ios系统平台等。对于游戏引擎产品开发,相关的游戏编辑器较为复杂,编译速度很慢,且需要windows版本。引擎sdk(softwaredevelopmentkit,软件开发工具包)没有游戏编辑器复杂,编译速度较快,需要android版本和ios版本。因此,本发明实施例中的指定系统平台可以是windows系统平台,以对windows系统平台的待编译文件进行分布式编译。其他系统平台可以是android系统平台和/或ios系统平台。

结合图3,下面对指定系统平台的待编译文件进行分布式编译的过程进行具体介绍。

首先,将指定系统平台的待编译文件发送至多个分布式编译机器中的任一分布式编译机器,这里任一分布式编译机器作为分布式编译发起者。

在本发明实施例中,多个分布式编译机器可以是运行在客户端模式下的计算机,通过客户端的操作界面可以填写分布式编译机器的相关配置信息。

然后,通过分布式编译发起者对指定系统平台的待编译文件进行预处理得到预处理后的文件,且基于预处理后的文件和编译命令生成编译任务并发送至预先选定的主机。

本发明实施例的待编译文件为.c/.cpp文件,预处理后的文件为.i中间文件。编译命令可以是gcc命令,其中包含有gcc参数。预先选定的主机是一台具有高性能的计算机器,它可以在客户端/服务器模式下运行。主机可以与多个分布式编译机器通过tcp(transmissioncontrolprotocol,传输控制协议)或ip(internetprotocol,网际互连协议)协议分别进行通讯。本发明实施例可以将编译任务发送至主机的服务器进程,由主机的服务器进程进行编译任务分发。

需要说明的是,本发明实施例的主机也可以作为分布式编译发起者,此时,可以将指定系统平台的待编译文件发送主机,由主机直接对待编译文件进行预处理。

最后,通过主机将编译任务分发至不同分布式编译机器进行编译生成目标文件或错误信息,并对来自不同分布式编译机器的目标文件进行链接生成可执行文件或对错误信息进行汇总,将可执行文件或汇总的错误信息反馈至分布式编译发起者。

该实施例通过将分布式编译机器编译生成的目标文件回传至主机,并由主机进行链接生成可执行文件,可以提高整体编译速度。当然,若主机作为分布式编译发起者,主机可以直接将本地生成的目标文件进行链接生成可执行文件。

本发明实施例的多个分布式编译机器处于同一网络中,主机将编译任务分发至不同分布式编译机器实际上是将编译任务分发至不同分布式编译机器的处理器上。不同分布式编译机器对各自接收的编译任务进行编译时,通过调用编译命令来对接收到的编译任务中的预处理后的文件进行编译生成目标文件或错误信息。具体的,分布式编译机器调用编译命令后先对预处理后的.i文件进行编译生成.s汇编文件。然后,将.s汇编文件进行汇编生成.o目标文件。

在本发明一实施例中,为了保证分布式编译机器既能够得到充分利用,又不至于负载过重,可以采用负载均衡算法将分布式任务合理地分发至不同的分布式编译机器中。

具体的,先通过主机获取在线的分布式编译机器的当前工作状态,以根据获取的分布式编译机器的当前工作状态确定处于空闲状态的分布式编译机器。然后,将编译任务基于负载均衡算法分发至处于空闲状态的分布式编译机器。主机保存有用于负载均衡算法的各分布式编译机器的当前负载文件,各分布式编译机器的当前负载文件很好的反应了相应的分布式编译机器的负载情况。因此,主机可以依据各分布式编译机器当前的负载文件并基于负载均衡算法将编译任务分发至处于空闲状态的分布式编译机器。

在该实施例中,主机本地保存有状态文件,状态文件中记录有在线的多个分布式编译机器的当前状态。分布式编译机器的当前状态可以是空闲状态或非空闲状态,空闲状态或非空闲状态实际上是指计算机的cpu的空闲状态或非空闲状态。该实施例的状态文件可以位于程序根目录下。

因此,主机获取本地保存的状态文件后,可以基于状态文件中记录的多个分布式编译机器的当前状态来确定处于空闲状态的分布式编译机器。进而将编译任务基于负载均衡算法分发至确定的处于空闲状态的分布式编译机器。本发明实施例的主机通过采用负载均衡算法分发编译任务,即使存在多个分布式编译发起者发起编译请求,主机也会自动平衡分布式编译机器的负担,使得各编译参与者不会占用过多的cpu资源,以免影响本机的正常开发工作。

该实施例中,每个分布式编译机器在启动分布式编译程序时,还可以选择本机共享多少内存给接收的编译任务进行编译使用,能够有效地避免编译任务占用过多内存影响到本机的正常开发工作。

由于分布式编译机器的状态会不定时的发生改变,为保证获取到的分布式编译机器的最新当前状态,在本发明一实施例中,还可以通过主机每隔预设时间判断是否存在新在线的分布式编译机器。若存在新在线的分布式编译机器,则将新在线的分布式编译机器的当前状态记录至状态文件中,从而对状态文件进行更新。当然,对状态文件的更新还包括对状态文件中记录的分布式编译机器的删除,如对记录的离线状态的分布式编译机器进行删除,本发明实施例对此不作具体限定。

本发明实施例中,主机的状态文件将在线的分布式编译机器以列表形式记录。因此,可以通过刷新列表的方式判断是否有新在线的分布式编译机器。例如,主机的客户端进程每隔60s刷新一次列表,以判断是否有新在线的分布式编译机器,如果有新的机器加入,也会对它们进行任务的分发。

在本发明一实施例中,如果仅修改少数几个文件,还可选择增量构建,也会极大缩短编译时间。另外,对不同系统平台中其他系统平台(如android系统平台、ios系统平台)的待编译文件分别进行编译的过程可以参见上文实施例,此处不再赘述。

在本发明一实施例中,若存在至少一个系统平台的待编译文件编译不成功,可以将对应编译结果包含的编译错误信息告知同一内网环境中的终端。告知方式可以是将编译错误信息携带至通知消息中,以通知消息的形式发送至终端。

基于同一发明构思,本发明实施例还提供了一种持续集成系统,图4示出了根据本发明一实施例的持续集成方法的流程示意图。参见图4,持续集成系统包括持续集成服务器410和指定服务器420。

持续集成服务器410定时获取更新代码,采用静态代码检查工具对更新代码进行静态代码检查。

持续集成服务器410通过预置执行脚本对检查成功的更新代码进行翻译得到针对不同系统平台的待编译文件。

持续集成服务器410对不同系统平台的待编译文件分别进行编译得到对应的编译结果。

持续集成服务器410将编译结果中的可执行文件按照不同系统平台分别打包,将打包后的可执行文件上传到指定服务器420。

在本发明一实施例中,持续集成服务器410将静态代码的检查结果上传至指定服务器420,指定服务器420用于接收对所述静态代码的检查结果的访问。

在本发明一实施例中,持续集成服务器410还可以将包含更新代码的文件上传到不同服务器(图中未示出),通过不同服务器采用静态代码检查工具对文件中的更新代码进行静态代码检查,将静态代码的检查结果下载更新到不同服务器的文件中,并接收不同服务器反馈的更新代码的静态代码检查结果。

参见图5,在本发明一实施例中,上文实施例中图4所示的持续集成系统还包括版本控制服务器430。持续集成服务器410从版本控制服务器430的版本库中定时获取更新代码。

在本发明一实施例中,持续集成服务器410将翻译得到的针对不同系统平台的待编译文件上传至版本控制服务器430,在版本控制服务器430中对不同系统平台的待编译文件进行同步。

在本发明一实施例中,不同系统平台包括windows系统平台、android系统平台及ios系统平台中的至少两项。

在本发明一实施例中,持续集成服务器410对不同系统平台的待编译文件分别进行编译得到包含可执行文件或编译错误信息的编译结果。

在本发明一实施例中,持续集成服务器410若判断出至少一个系统平台的待编译文件的编译结果包含编译错误信息,向同一内网环境中的终端发送编译错误的通知消息。

基于同一发明构思,本发明实施例还提供了一种基于分布式编译的持续集成系统,图6示出了根据本发明一实施例的基于分布式编译的持续集成方法的流程示意图。参见图6,基于分布式编译的持续集成系统包括持续集成服务器610、分布式编译子系统620、指定服务器630。

持续集成服务器610定时获取更新代码,采用静态代码检查工具对更新代码进行静态代码检查。

持续集成服务器610通过预置执行脚本对检查成功的更新代码进行翻译得到针对不同系统平台的待编译文件。

持续集成服务器610通知分布式编译子系统620对不同系统平台中指定系统平台的待编译文件进行分布式编译,且持续集成服务器610对不同系统平台中其他系统平台的待编译文件分别进行编译,得到对应的编译结果。

持续集成服务器610将编译结果中的可执行文件按照不同系统平台分别打包,将打包后的可执行文件上传到指定服务器630。

在本发明一实施例中,持续集成服务器610将静态代码的检查结果上传至指定服务器630,指定服务器630用于接收对静态代码的检查结果的访问。

在本发明一实施例中,持续集成服务器610还可以将包含更新代码的文件上传到不同服务器(图中未示出),通过不同服务器采用静态代码检查工具对文件中的更新代码进行静态代码检查,将静态代码的检查结果下载更新到不同服务器的文件中,并接收不同服务器反馈的更新代码的静态代码检查结果。

参见图7,在本发明一实施例中,上文实施例中图6所示的基于分布式编译的持续集成系统还包括版本控制服务器640。

持续集成服务器610从版本控制服务器640的版本库中定时获取更新代码。

在本发明一实施例中,持续集成服务器610将翻译得到的针对不同系统平台的待编译文件上传至版本控制服务器640,在版本控制服务器640中对不同系统平台的待编译文件进行同步。

在本发明一实施例中,不同系统平台中的指定系统平台包括windows系统平台,其他系统平台包括android系统平台和/或ios系统平台。

继续参见图7,在本发明一实施例中,上文实施例的图6中的分布式编译子系统620包含预先选定的主机621和多个分布式编译机器(图7示出三个分布式编译机器,即分布式编译机器622、分布式编译机器623、分布式编译机器624)。

持续集成服务器610将指定系统平台的待编译文件发送至分布式编译子系统620中的任一分布式编译机器。分布式编译子系统620通过任一分布式编译机器对指定系统平台的待编译文件进行预处理得到预处理后的文件,基于预处理后的文件和编译命令生成编译任务并发送主机621。分布式编译子系统620通过主机621将编译任务分发至不同分布式编译机器进行编译生成目标文件或错误信息,并对来自不同分布式编译器的目标文件进行链接生成可执行文件或对错误信息进行汇总,将可执行文件或汇总的错误信息反馈至任一分布式编译机器。

在本发明一实施例中,分布式编译子系统620通过主机621将编译任务分发至不同分布式编译机器,不同分布式编译机器通过调用编译命令对接收到的预处理后的文件进行编译生成目标文件或错误信息。

在本发明一实施例中,分布式编译子系统620通过主机621获取在线的分布式编译机器的当前工作状态,根据获取的分布式编译机器的当前工作状态确定处于空闲状态的分布式编译机器,将编译任务基于负载均衡算法分发至处于空闲状态的分布式编译机器。

在本发明一实施例中,分布式编译子系统620通过主机621获取本地保存的状态文件,状态文件中记录有在线的多个分布式编译机器的当前状态,基于状态文件中记录的多个分布式编译机器的当前状态确定处于空闲状态的分布式编译机器。

在本发明一实施例中,分布式编译子系统620通过主机621每隔预设时间判断是否存在新在线的分布式编译机器,并将判断出的新在线的分布式编译机器的当前状态记录至状态文件中,以对状态文件进行更新。

在本发明一实施例中,持续集成服务器610对不同系统平台中其他系统平台的待编译文件进行编译得到包含可执行文件或编译错误信息的编译结果。

在本发明一实施例中,持续集成服务器610获取编译结果,若判断出至少一个系统平台的待编译文件的编译结果包含编译错误信息,向同一内网环境中的终端发送编译错误的通知消息。

基于同一发明构思,本发明实施例还提供了一种计算机存储介质,计算机存储介质存储有计算机程序代码,当计算机程序代码在计算设备上运行时,导致计算设备执行上文任意实施例的持续集成方法、上文任意实施例的基于分布式编译的持续集成方法。

基于同一发明构思,本发明实施例还提供了一种计算设备,包括:处理器;存储有计算机程序代码的存储器;当计算机程序代码被处理器运行时,导致计算设备执行上文任意实施例的持续集成方法、上文任意实施例的基于分布式编译的持续集成方法。

所属领域的技术人员可以清楚地了解到,上述描述的系统、装置、模块和单元的具体工作过程,可以参考前述方法实施例中的对应过程,为简洁起见,在此不另赘述。

另外,在本发明各个实施例中的各功能单元可以物理上相互独立,也可以两个或两个以上功能单元集成在一起,还可以全部功能单元都集成在一个处理单元中。上述集成的功能单元既可以采用硬件的形式实现,也可以采用软件或者固件的形式实现。

本领域普通技术人员可以理解:所述集成的功能单元如果以软件的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,其包括若干指令,用以使得一台计算设备(例如个人计算机,服务器,或者网络设备等)在运行所述指令时执行本发明各实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom)、随机存取存储器(ram),磁碟或者光盘等各种可以存储程序代码的介质。

或者,实现前述方法实施例的全部或部分步骤可以通过程序指令相关的硬件(诸如个人计算机,服务器,或者网络设备等的计算设备)来完成,所述程序指令可以存储于一计算机可读取存储介质中,当所述程序指令被计算设备的处理器执行时,所述计算设备执行本发明各实施例所述方法的全部或部分步骤。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:在本发明的精神和原则之内,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案脱离本发明的保护范围。

本发明实施例还包括下列编号条款中规定的这些和其他方面:

1、一种持续集成方法,其中,包括:

定时获取更新代码,采用静态代码检查工具对更新代码进行静态代码检查;

通过预置执行脚本对检查成功的更新代码进行翻译得到针对不同系统平台的待编译文件;

对不同系统平台的待编译文件分别进行编译得到对应的编译结果;

将所述编译结果中的可执行文件按照不同系统平台分别打包,将打包后的可执行文件上传到指定服务器。

2、根据条款1所述的方法,其中,所述定时获取更新代码,包括:

从版本控制服务器的版本库中定时获取更新代码。

3、根据条款1或2所述的方法,其中,采用静态代码检查工具对更新代码进行静态代码检查之后,还包括:

将静态代码的检查结果上传至指定服务器,所述指定服务器用于接收对所述静态代码的检查结果的访问。

4、根据条款1或2所述的方法,其中,

采用静态代码检查工具对更新代码进行静态代码检查,包括:将包含所述更新代码的文件上传到不同服务器,通过所述不同服务器采用静态代码检查工具对所述文件中的更新代码进行静态代码检查;

采用静态代码检查工具对更新代码进行静态代码检查之后,还包括:将静态代码的检查结果下载更新到不同服务器的所述文件中,并接收不同服务器反馈的更新代码的静态代码检查结果。

5、根据条款2所述的方法,其中,通过预置执行脚本对检查成功的更新代码进行翻译得到针对不同系统平台的待编译文件之后,还包括:

将翻译得到的针对不同系统平台的待编译文件上传至所述版本控制服务器,在所述版本控制服务器中对不同系统平台的待编译文件进行同步。

6、根据条款1或2所述的方法,其中,所述不同系统平台包括windows系统平台、android系统平台及ios系统平台中的至少两项。

7、根据条款1或2所述的方法,其中,对不同系统平台的待编译文件分别进行编译得到对应的编译结果,包括:

对不同系统平台的待编译文件分别进行编译得到包含可执行文件或编译错误信息的编译结果。

8、根据条款7所述的方法,其中,对不同系统平台的待编译文件进行分别进行编译得到对应的编译结果之后,还包括:

若至少一个系统平台的待编译文件的编译结果包含编译错误信息,向同一内网环境中的终端发送编译错误的通知消息。

9、一种基于分布式编译的持续集成方法,其中,包括:

定时获取更新代码,采用静态代码检查工具对更新代码进行静态代码检查;

通过预置执行脚本对检查成功的更新代码进行翻译得到针对不同系统平台的待编译文件;

对不同系统平台中指定系统平台的待编译文件进行分布式编译,且对不同系统平台中其他系统平台的待编译文件分别进行编译,得到对应的编译结果;

将所述编译结果中的可执行文件按照不同系统平台分别打包,将打包后的可执行文件上传到指定服务器。

10、根据条款9所述的方法,其中,所述定时获取更新代码,包括:

从版本控制服务器的版本库中定时获取更新代码。

11、根据条款9或10所述的方法,其中,采用静态代码检查工具对更新代码进行静态代码检查之后,还包括:

将静态代码的检查结果上传至指定服务器,所述指定服务器用于接收对所述静态代码的检查结果的访问。

12、根据条款9或10所述的方法,其中,

采用静态代码检查工具对更新代码进行静态代码检查,包括:将包含所述更新代码的文件上传到不同服务器,通过所述不同服务器采用静态代码检查工具对所述文件中的更新代码进行静态代码检查;

采用静态代码检查工具对更新代码进行静态代码检查之后,还包括:将静态代码的检查结果下载更新到不同服务器的所述文件中,并接收不同服务器反馈的更新代码的静态代码检查结果。

13、根据条款10所述的方法,其中,通过预置执行脚本对检查成功的更新代码进行翻译得到针对不同系统平台的待编译文件之后,还包括:

将翻译得到的针对不同系统平台的待编译文件上传至所述版本控制服务器,在所述版本控制服务器中对不同系统平台的待编译文件进行同步。

14、根据条款9或10所述的方法,其中,所述不同系统平台中的指定系统平台包括windows系统平台。

15、根据条款9或10所述的方法,其中,所述不同系统平台中的其他系统平台包括android系统平台和/或ios系统平台。

16、根据条款9或10所述的方法,其中,对不同系统平台中指定系统平台的待编译文件进行分布式编译,包括:

将所述指定系统平台的待编译文件发送至多个分布式编译机器中的任一分布式编译机器;

通过所述任一分布式编译机器对指定系统平台的待编译文件进行预处理得到预处理后的文件,基于预处理后的文件和编译命令生成编译任务并发送至预先选定的主机;

通过所述主机将编译任务分发至不同分布式编译机器进行编译生成目标文件或错误信息,并对来自不同分布式编译器的目标文件进行链接生成可执行文件或对所述错误信息进行汇总,将所述可执行文件或汇总的错误信息反馈至所述任一分布式编译机器。

17、根据条款16所述的方法,其中,通过所述主机将编译任务分发至不同分布式编译机器进行编译生成目标文件或错误信息,包括:

通过所述主机将编译任务分发至不同分布式编译机器,所述不同分布式编译机器通过调用所述编译命令对接收到的预处理后的文件进行编译生成目标文件或错误信息。

18、根据条款16所述的方法,其中,通过所述主机将编译任务分发至不同分布式编译机器进行编译生成目标文件或错误信息,包括:

通过所述主机获取在线的分布式编译机器的当前工作状态,根据获取的分布式编译机器的当前工作状态确定处于空闲状态的分布式编译机器;

将所述编译任务基于负载均衡算法分发至处于空闲状态的分布式编译机器。

19、根据条款18所述的方法,其中,通过所述主机获取在线的分布式编译机器的当前工作状态,根据获取的分布式编译机器的当前工作状态确定处于空闲状态的分布式编译机器,包括:

通过所述主机获取本地保存的状态文件,所述状态文件中记录有在线的多个分布式编译机器的当前状态;

基于所述状态文件中记录的多个分布式编译机器的当前状态确定处于空闲状态的分布式编译机器。

20、根据条款19所述的方法,其中,还包括:

通过所述主机每隔预设时间判断是否存在新在线的分布式编译机器;

将判断出的新在线的分布式编译机器的当前状态记录至所述状态文件中,以对所述状态文件进行更新。

21、根据条款9所述的方法,其中,对不同系统平台中其他系统平台的待编译文件分别进行编译,包括:

对不同系统平台中其他系统平台的待编译文件分别进行编译得到包含可执行文件或编译错误信息的编译结果。

22、根据条款16或21所述的方法,其中,还包括:

若至少一个系统平台的待编译文件的编译结果包含编译错误信息,向同一内网环境中的终端发送编译错误的通知消息。

23、一种持续集成系统,其中,包括持续集成服务器和指定服务器,

所述持续集成服务器定时获取更新代码,采用静态代码检查工具对更新代码进行静态代码检查;

所述持续集成服务器通过预置执行脚本对检查成功的更新代码进行翻译得到针对不同系统平台的待编译文件;

所述持续集成服务器对不同系统平台的待编译文件分别进行编译得到对应的编译结果;

所述持续集成服务器将所述编译结果中的可执行文件按照不同系统平台分别打包,将打包后的可执行文件上传到所述指定服务器。

24、根据条款23所述的系统,其中,还包括版本控制服务器,

所述持续集成服务器从所述版本控制服务器的版本库中定时获取更新代码。

25、根据条款23或24所述的系统,其中,

所述持续集成服务器将静态代码的检查结果上传至所述指定服务器,所述指定服务器用于接收对所述静态代码的检查结果的访问。

26、根据条款23或24所述的系统,其中,

所述持续集成服务器将包含所述更新代码的文件上传到不同服务器,通过所述不同服务器采用静态代码检查工具对所述文件中的更新代码进行静态代码检查,将静态代码的检查结果下载更新到不同服务器的所述文件中,并接收不同服务器反馈的更新代码的静态代码检查结果。

27、根据条款24所述的系统,其中,

所述持续集成服务器将翻译得到的针对不同系统平台的待编译文件上传至所述版本控制服务器,在所述版本控制服务器中对不同系统平台的待编译文件进行同步。

28、根据条款23或24所述的系统,其中,所述不同系统平台包括windows系统平台、android系统平台及ios系统平台中的至少两项。

29、根据条款23或24所述的系统,其中,

所述持续集成服务器对不同系统平台的待编译文件分别进行编译得到包含可执行文件或编译错误信息的编译结果。

30、根据条款29所述的系统,其中,

所述持续集成服务器若判断出至少一个系统平台的待编译文件的编译结果包含编译错误信息,向同一内网环境中的终端发送编译错误的通知消息。

31、一种基于分布式编译的持续集成系统,包括持续集成服务器、分布式编译子系统、指定服务器,其中,

所述持续集成服务器定时获取更新代码,采用静态代码检查工具对更新代码进行静态代码检查;

所述持续集成服务器通过预置执行脚本对检查成功的更新代码进行翻译得到针对不同系统平台的待编译文件;

所述持续集成服务器通知分布式编译子系统对不同系统平台中指定系统平台的待编译文件进行分布式编译,且所述持续集成服务器对不同系统平台中其他系统平台的待编译文件分别进行编译,得到对应的编译结果;

所述持续集成服务器将所述编译结果中的可执行文件按照不同系统平台分别打包,将打包后的可执行文件上传到指定服务器。

32、根据条款31所述的系统,其中,还包括版本控制服务器,

所述持续集成服务器从所述版本控制服务器的版本库中定时获取更新代码。

33、根据条款31或32所述的系统,其中,

所述持续集成服务器将静态代码的检查结果上传至指定服务器,所述指定服务器用于接收对所述静态代码的检查结果的访问。

34、根据条款31或32所述的系统,其中,

所述持续集成服务器将包含所述更新代码的文件上传到不同服务器,通过所述不同服务器采用静态代码检查工具对所述文件中的更新代码进行静态代码检查,将静态代码的检查结果下载更新到不同服务器的所述文件中,并接收不同服务器反馈的更新代码的静态代码检查结果。

35、根据条款32所述的系统,其中,

所述持续集成服务器将翻译得到的针对不同系统平台的待编译文件上传至所述版本控制服务器,在所述版本控制服务器中对不同系统平台的待编译文件进行同步。

36、根据条款31或32所述的系统,其中,所述不同系统平台中的指定系统平台包括windows系统平台。

37、根据条款31或32所述的系统,其中,所述不同系统平台中的其他系统平台包括android系统平台和/或ios系统平台。

38、根据条款31或32所述的系统,其中,所述分布式编译子系统包含预先选定的主机和多个分布式编译机器,

所述持续集成服务器将所述指定系统平台的待编译文件发送至所述分布式编译子系统中的任一分布式编译机器;

所述分布式编译子系统通过所述任一分布式编译机器对指定系统平台的待编译文件进行预处理得到预处理后的文件,基于预处理后的文件和编译命令生成编译任务并发送所述主机;

所述分布式编译子系统通过所述主机将编译任务分发至不同分布式编译机器进行编译生成目标文件或错误信息,并对来自不同分布式编译器的目标文件进行链接生成可执行文件或对所述错误信息进行汇总,将所述可执行文件或汇总的错误信息反馈至所述任一分布式编译机器。

39、根据条款38所述的系统,其中,

所述分布式编译子系统通过所述主机将编译任务分发至不同分布式编译机器,所述不同分布式编译机器通过调用所述编译命令对接收到的预处理后的文件进行编译生成目标文件或错误信息。

40、根据条款38所述的系统,其中,

所述分布式编译子系统通过所述主机获取在线的分布式编译机器的当前工作状态,根据获取的分布式编译机器的当前工作状态确定处于空闲状态的分布式编译机器;

将所述编译任务基于负载均衡算法分发至处于空闲状态的分布式编译机器。

41、根据条款40所述的系统,其中,

所述分布式编译子系统通过所述主机获取本地保存的状态文件,所述状态文件中记录有在线的多个分布式编译机器的当前状态;

基于所述状态文件中记录的多个分布式编译机器的当前状态确定处于空闲状态的分布式编译机器。

42、根据条款41所述的系统,其中,

所述分布式编译子系统通过所述主机每隔预设时间判断是否存在新在线的分布式编译机器;

将判断出的新在线的分布式编译机器的当前状态记录至所述状态文件中,以对所述状态文件进行更新。

43、根据条款42所述的系统,其中,

所述持续集成服务器对不同系统平台中其他系统平台的待编译文件分别进行编译得到包含可执行文件或编译错误信息的编译结果。

44、根据条款38或43所述的系统,其中,

所述持续集成服务器获取编译结果,若判断出至少一个系统平台的待编译文件的编译结果包含编译错误信息,向同一内网环境中的终端发送编译错误的通知消息。

45、一种计算机存储介质,所述计算机存储介质存储有计算机程序代码,当所述计算机程序代码在计算设备上运行时,导致所述计算设备执行条款1-8中任意一款所述的持续集成方法、条款9-22中任意一款所述的基于分布式编译的持续集成方法。

46、一种计算设备,包括:处理器;存储有计算机程序代码的存储器;当所述计算机程序代码被所述处理器运行时,导致所述计算设备执行条款1-8中任意一款所述的持续集成方法、条款9-22中任意一款所述的基于分布式编译的持续集成方法。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1