本申请涉及计算机领域,尤其涉及一种基于容器化的持续集成的方法及设备。
背景技术:
随着持续集成技术的不断发展,软件的团队开发变得越来越普遍,持续集成可以让团队协作开发软件变得更加方便。但是,目前的持续集成还存在以下缺点:
1、编译麻烦,每次新加服务都要解决编译依赖、编译版本、编译本身的问题;2、现有技术中的集成方法,对于代码code的管理、规范介绍比较少,没有统一的规范,不够通用;3、持续集成后的相关代码,部署问题还是比较多,主要存在版本问题、服务器本地链接库等等问题。
技术实现要素:
本申请的一个目的是提供一种基于容器化的持续集成的方法及设备,以实现在软件开发过程中全流程的打通,利用工具跑通基础的编译、单元测试,然后通过对代码的审核,减少逻辑出错的可能性,从而进一步提升研发的效率。
根据本申请的一个方面,提供了一种基于容器化的持续集成的方法,其中,所述方法包括:
代码管理系统,其中,所述代码管理系统包括代码审核工具和应用容器引擎;其中,
所述代码管理系统接收至少一个客户端发送的源代码,并对每个所述客户端对应的源代码进行管理和配置;
通过所述代码审核工具分别对每个所述客户端对应的源代码进行审核,得到每个所述客户端对应的审核通过的源代码并提交至所述代码管理系统;
在所述应用容器引擎中,对所述至少一个所述客户端对应的审核通过的源代码进行打包,得到所述至少一个客户端对应的代码包。
进一步地,上述一种基于容器化的持续集成的方法中,其中,所述客户端对应的源代码由所述客户端进行代码编写、代码编译以及单元测试后得到。
进一步地,上述一种基于容器化的持续集成的方法中,所述通过所述代码审核工具分别对每个所述客户端对应的源代码进行审核,得到每个所述客户端对应的审核通过的源代码,包括:
所述通过所述代码审核工具分别对每个所述客户端对应的源代码进行风格检查和逻辑检查,得到每个所述客户端对应的审核通过的源代码。
进一步地,上述一种基于容器化的持续集成的方法中,所述代码管理系统为gitlab管理系统。
进一步地,上述一种基于容器化的持续集成的方法中,所述在所述应用容器引擎中,对所述至少一个所述客户端对应的审核通过的源代码进行打包,得到所述至少一个客户端对应的代码包,包括:
在所述应用容器引擎中,采用所述gitlab管理系统中的运行环境,对所述至少一个所述客户端对应的审核通过的源代码进行打包,得到所述至少一个客户端对应的代码包。
进一步地,上述一种基于容器化的持续集成的方法中,其中,所述代码审核工具分别对每个所述客户端对应的源代码进行审核之后,还包括:
将所述客户端对应的未审核通过的源代码返回至所述客户端。
根据本申请的另一方面,还提供了一种非易失性存储介质,其上存储有计算机可读指令,所述计算机可读指令可被处理器执行时,使所述处理器实现如上述一种基于容器化的持续集成的方法。
根据本申请的另一方面,还提供了一种基于容器化的持续集成的设备,其中,所述设备包括:
一个或多个处理器;
非易失性存储介质,用于存储一个或多个计算机可读指令,
当所述一个或多个计算机可读指令被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上述一种基于容器化的持续集成的方法。
与现有技术相比,本申请包括代码管理系统,其中,所述代码管理系统包括代码审核工具和应用容器引擎;其中,所述代码管理系统接收至少一个客户端发送的源代码,并对每个所述客户端对应的源代码进行管理和配置;通过所述代码审核工具分别对每个所述客户端对应的源代码进行审核,得到每个所述客户端对应的审核通过的源代码并提交至所述代码管理系统;在所述应用容器引擎中,对所述至少一个所述客户端对应的审核通过的源代码进行打包,得到所述至少一个客户端对应的代码包,实现了在软件开发过程中全流程的打通,利用工具跑通基础编译、测试,然后通过代码审核工具对各个客户端对应的源代码进行审核,减少逻辑出错的可能性,从而进一步提升研发的效率。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1示出根据本申请一个方面的一种基于容器化的持续集成的方法的流程示意图。
附图中相同或相似的附图标记代表相同或相似的部件。
具体实施方式
下面结合附图对本申请作进一步详细描述。
在本申请一个典型的配置中,终端、服务网络的设备和可信方均包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。
如图1所示,本申请一个方面的一种基于容器化的持续集成的方法的流程示意图。在此,所述容器化docker是一个开源的应用容器引擎,可以让开发者打包相关代码到一个可移植的docker(容器中),然后可以部署任务到docker基础服务的机器中,docker可以直接运行在宿主的操作系统,底层上调用cgroup等等linux特性,直接调动操作系统的系统调用接口,具有开销小、容器复杂度低、启动快等等特性。
其中,所述方法包括代码管理系统,其中,所述代码管理系统包括代码审核工具和应用容器引擎,具体包括:
首先,所述代码管理系统接收至少一个客户端发送的源代码,并对每个所述客户端对应的源代码进行管理和配置;其中,所述客户端可以是一个,也可以是多个,所有的客户端编写的源代码都会发送至所述代码管理系统进行代码的管理与配置。在本申请一优选实施例中,可以将所述客户端的数量优选为6个,即,在一个研发过程中有6个研发人员进行共同研发,分别负责项目的一个部分,此时会有6个客户端,在每个客户端完成相应的源代码之后,每个客户端对应的源代码都会上传到所述代码管理系统,所述代码管理系统接收来自所述6个客户端发送的源代码,并对所述6个客户端发送的所述源代码进行管理和配置。
之后,通过所述代码审核工具分别对每个所述客户端对应的源代码进行审核,得到每个所述客户端对应的审核通过的源代码并提交至所述代码管理系统。
需要说明的是,所述代码审核工具包括但不限于可视化代码评审工具phabricator,通过所述phabricator分别对每个所述客户端对应的源代码进行审核,当然,对源代码的审核可以是机器审核,也可以是人工审核,例如,由研发人员通过phabricator发起代码审核,将需要进行审核的源代码发送给代码审核人员,以便代码审核人员通过phabricator对源代码进行审核,实现对代码进行的人工审核,如果所述源代码经人工审核通过,则会被提交至所述代码管理系统。其中,所述phabricator是由facebook开发的一套集任务追踪、文档、代码库、文件存储等功能于一体的开源软件,功能较为完善,对于创业公司、小公司乃至大公司而言都是一个非常好用的管理工具,phabricator由php语言编写并通过常用的webserver来提供服务。
在所述应用容器引擎中,对所述至少一个所述客户端对应的审核通过的源代码进行打包,得到所述至少一个客户端对应的代码包。
需要说明的是,所述应用容器引擎包括但不限于docker,例如,由所述6个客户端发送的所述源代码通过所述phabricator经过人工审核通过后,被提交至所述代码管理系统,由所述代码管理系统将所述审核通过的源代码提交至所述docker中进行打包,得到所述6个客户端对应的代码包。
本申请实施例中的上述一种基于容器化的持续集成的方法包括代码管理系统,其中,所述代码管理系统包括代码审核工具和应用容器引擎;其中,所述代码管理系统接收至少一个客户端发送的源代码,并对每个所述客户端对应的源代码进行管理和配置;通过所述代码审核工具分别对每个所述客户端对应的源代码进行审核,得到每个所述客户端对应的审核通过的源代码并提交至所述代码管理系统;在所述应用容器引擎中,对所述至少一个所述客户端对应的审核通过的源代码进行打包,得到所述至少一个客户端对应的代码包,实现了在软件开发过程中全流程的打通,利用工具跑通基础编译、测试,然后通过可视化代码评审工具phabricator对源代码进行审核,减少逻辑出错的可能性,从而进一步提升研发的效率。
接着本申请的上述实施例,上述一种基于容器化的持续集成的方法中,其中,所述客户端对应的源代码由所述客户端进行代码编写、代码编译以及单元测试后得到。
如图1所示,由研发人员在所述客户端进行相关的代码编写、代码编译以及单元测试等相关工作,排除掉一些基本的错误,得到所述客户端对应的源代码,然后将所述客户端对应的源代码发送到所述代码管理系统。
接着本申请的上述实施例,上述一种基于容器化的持续集成的方法中,所述通过所述代码审核工具分别对每个所述客户端对应的源代码进行审核,得到每个所述客户端对应的审核通过的源代码,包括:
所述通过所述代码审核工具分别对每个所述客户端对应的源代码进行风格检查和逻辑检查,得到每个所述客户端对应的审核通过的源代码。
需要说明的是,所述风格检查由所述phabricator自动检查,所述逻辑检查由研发人员通过所述phabricator进行人工检查,例如,若误将1*6编写成1 6,则需要由研发人员通过所述逻辑检查予以发现。
接着本申请的上述实施例,上述一种基于容器化的持续集成的方法中,所述代码管理系统为gitlab管理系统。
在此,代码的管理和配置放在所述gitlab管理系统中进行。
接着本申请的上述实施例,上述一种基于容器化的持续集成的方法中,所述在所述应用容器引擎中,对所述至少一个所述客户端对应的审核通过的源代码进行打包,得到所述至少一个客户端对应的代码包,包括:
在所述应用容器引擎中,采用所述gitlab管理系统中的运行环境,对所述至少一个所述客户端对应的审核通过的源代码进行打包,得到所述至少一个客户端对应的代码包。
需要说明的是,所述gitlab管理系统中的运行环境包括但不限于gitlabrunner,例如,将所述6个客户端对应的审核通过的源代码提交至所述gitlab管理系统中之后,利用所述gitlab管理系统中的runner进行所述6个客户端对应的审核通过的源代码进行打包,得到所述6个客户端对应的代码包。其中,gitlab是由gitlabinc.开发,使用mit许可证的基于网络的git仓库管理工具开源项目,且具有wiki和issue跟踪功能,使用git作为代码管理工具,并在此基础上搭建起来的web服务。
接着本申请的上述实施例,上述一种基于容器化的持续集成的方法中,其中,所述代码审核工具分别对每个所述客户端对应的源代码进行审核之后,还包括:
将所述客户端对应的未审核通过的源代码返回至所述客户端。
需要说明的是,若所述客户端对应的源代码未审核通过,则将所述客户端对应的源代码重新返回所述客户端,直至所述客户端对应的源代码审核通过为止,例如,所述6个客户端对应的源代码在通过所述phabricator进行人工审核之后,其中有客户端client1对应的源代码code1未通过审核,则将所述源代码code1重新返回其对应的所述客户端client1,直至所述源代码code1通过审核。
根据本申请的另一方面,还提供了一种非易失性存储介质,其上存储有计算机可读指令,所述计算机可读指令可被处理器执行时,使所述处理器实现如上述一种基于容器化的持续集成的方法。
根据本申请的另一方面,还提供了一种基于容器化的持续集成的设备,其中,所述设备包括:
一个或多个处理器;
非易失性存储介质,用于存储一个或多个计算机可读指令,
当所述一个或多个计算机可读指令被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上述一种基于容器化的持续集成的方法。
在此,所述一种基于容器化的持续集成的设备中的各实施例的详细内容,具体可参见上述一种基于容器化的持续集成的方法实施例的对应部分,在此,不再赘述。
综上所述,本申请包括代码管理系统,其中,所述代码管理系统包括代码审核工具和应用容器引擎;其中,所述代码管理系统接收至少一个客户端发送的源代码,并对每个所述客户端对应的源代码进行管理和配置;通过所述代码审核工具分别对每个所述客户端对应的源代码进行审核,得到每个所述客户端对应的审核通过的源代码并提交至所述代码管理系统;在所述应用容器引擎中,对所述至少一个所述客户端对应的审核通过的源代码进行打包,得到所述至少一个客户端对应的代码包,实现了在软件开发过程中全流程的打通,利用工具跑通基础编译、测试,然后通过代码审核工具对各个客户端对应的源代码进行审核,减少逻辑出错的可能性,从而进一步提升研发的效率。
需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(asic)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本申请的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,ram存储器,磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。
另外,本申请的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本申请的方法和/或技术方案。而调用本申请的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。在此,根据本申请的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本申请的多个实施例的方法和/或技术方案。
对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
1.一种基于容器化的持续集成的方法,其中,所述方法包括:
代码管理系统,其中,所述代码管理系统包括代码审核工具和应用容器引擎;其中,
所述代码管理系统接收至少一个客户端发送的源代码,并对每个所述客户端对应的源代码进行管理和配置;
通过所述代码审核工具分别对每个所述客户端对应的源代码进行审核,得到每个所述客户端对应的审核通过的源代码并提交至所述代码管理系统;
在所述应用容器引擎中,对所述至少一个所述客户端对应的审核通过的源代码进行打包,得到所述至少一个客户端对应的代码包。
2.根据权利要求1所述的方法,其中,所述客户端对应的源代码由所述客户端进行代码编写、代码编译以及单元测试后得到。
3.根据权利要求1所述的方法,所述通过所述代码审核工具分别对每个所述客户端对应的源代码进行审核,得到每个所述客户端对应的审核通过的源代码,包括:
所述通过所述代码审核工具分别对每个所述客户端对应的源代码进行风格检查和逻辑检查,得到每个所述客户端对应的审核通过的源代码。
4.根据权利要求1所述的方法,所述代码管理系统为gitlab管理系统。
5.根据权利要求4所述的方法,所述在所述应用容器引擎中,对所述至少一个所述客户端对应的审核通过的源代码进行打包,得到所述至少一个客户端对应的代码包,包括:
在所述应用容器引擎中,采用所述gitlab管理系统中的运行环境,对所述至少一个所述客户端对应的审核通过的源代码进行打包,得到所述至少一个客户端对应的代码包。
6.根据权利要求3所述的方法,其中,所述代码审核工具分别对每个所述客户端对应的源代码进行审核之后,还包括:
将所述客户端对应的未审核通过的源代码返回至所述客户端。
7.一种非易失性存储介质,其上存储有计算机可读指令,所述计算机可读指令可被处理器执行时,使所述处理器实现如权利要求1至6中任一项所述的方法。
8.一种基于容器化的持续集成的设备,其中,所述设备包括:
一个或多个处理器;
非易失性存储介质,用于存储一个或多个计算机可读指令,
当所述一个或多个计算机可读指令被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1至6中任一项所述的方法。
技术总结