一种基于docker容器技术的持续集成实现方法

文档序号:9865213阅读:302来源:国知局
一种基于docker容器技术的持续集成实现方法
【技术领域】
[0001]本发明涉及计算机软件开发领域,尤其是涉及一种基于docker容器技术的持续集成实现方法。
【背景技术】
[0002]随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题。尤其是近些年来,敏捷开发在软件工程领域越来越红火,如何能在不断变化的需求中快速适应和保证软件的质量也显得尤其的重要。
[0003]持续集成正是针对这一类问题的一种软件开发实践。它倡导团队开发成员必须经常集成他们的工作,甚至每天都可能发生多次集成。而每次的集成都是通过自动化的构建来验证,包括自动编译、发布和测试,从而尽快地发现集成错误,让团队能够更快的开发内聚的软件。
[0004]持续集成的核心价值在于:
[0005]1.持续集成中的任何一个环节都是自动完成的,无需太多的人工干预,有利于减少重复过程以节省时间、费用和工作量;
[0006]2.持续集成保障了每个时间点上团队成员提交的代码是能成功集成的。换言之,任何时间点都能第一时间发现软件的集成问题,使任意时间发布可部署的软件成为了可會K;
[0007]3.持续集成还能利于软件本身的发展趋势,这点在需求不明确或是频繁性变更的情景中尤其重要,持续集成的质量能帮助团队进行有效决策,同时建立团队对开发产品的?目心。
[0008]然而,这其中存在一个构建机的部署问题,通常来讲,每个构建任务对应一台构建机,而构建机的选择通常部署在虚拟机平台上,极少数构建机操作系统不支持虚拟机环境的需要部署在实体柜上。以vmware vsphere服务器虚拟化为例,手动安装一台Windows虚拟机或者Linux虚拟机大概要十几分钟,每台虚拟机为保证构建性能,通常会选择4核、6G内存、400G存储,而且是独立内存、厚置存储(thick存储,而不是thin存储,代表存储是占磁盘的真实空间,而非根据需要自动扩展)。为保证所有操作系统的软件包及时按需构建出来,软件通常被划分成十几个子模块分别构建,每个模块对应的操作系统也要准备一套环境,理论上,理想状态下最快构建一个软件包,所需构建机数量轻轻松松就能达到100台以上,所需要的硬件成本很高,部署费时费力。
[0009]而且还面临一个大问题,就是如果需要代码回退到某个版本再构建一个软件包就需要清理原来的环境,下载对应的代码版本开始构建,所花费时间很长,而且需要回归主线版本时又得重新构建,时效大打折扣,那么为了保证时效性,通常会选择再部署一套构建环境随时待命来构建指定的代码版本,这意味着上面所描述的构建机数量需要加上一倍,并且会经常处于闲置状态,无论对于哪个公司来讲都是一种巨大的浪费。
[0010]docker是Paas提供商dotc1ud开源的一个基于LXC的高级容器引擎,源代码托管在Github上,基于go语言并遵从Apache2.0协议开源。它让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口,几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,它不依赖于任何语言、框架以及系统,换句话说,docker可以理解为更为轻量级的虚拟机。

【发明内容】

[0011]本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种降低硬件投入成本、简化持续集成环境部署的基于docker容器技术的持续集成实现方法。
[0012]本发明的目的可以通过以下技术方案来实现:
[0013]一种基于docker容器技术的持续集成实现方法,包括以下步骤:
[0014]I)获取原生镜像;
[0015]2)设置用于管理docker容器的容器集群工具;
[0016]3)执行所述原生镜像,生成一个docker容器,并配置相关环境参数;
[0017]4)docker容器部署持续集成系统的客户端插件,使该docker容器成为一客户端节占.V ,
[0018]5)持续集成系统的服务端获得所述客户端节点的信息,并配置所述客户端节点的构建信息,完成构建任务。
[0019]所述相关环境参数包括网络、密码和代码编译依赖库。
[0020]一种基于docker容器技术的持续集成实现方法,包括以下步骤:
[0021]I)获取原生镜像;
[0022]2)设置用于管理docker容器的容器集群工具;
[0023]3)执行所述原生镜像,生成一个docker容器;
[0024]4)docker容器部署持续集成系统客户端插件,并配置相关环境参数;
[0025]5)对配置相关环境参数后的docker容器生成一个新镜像,并将该镜像推送至镜像仓库中,所述镜像仓库中包含多个新镜像;
[0026]6)容器集群工具启动所述镜像仓库中的一个新镜像,生成一个运行容器,成为持续集成系统的一客户端节点;
[0027]7)持续集成系统的服务端作为管理节点,所述客户端节点自动向管理节点发送连接请求和环境配置信息,管理节点识别成功后完成构建任务。
[0028]所述相关环境参数的配置包括:将网络IP设置为自动分配、配置管理节点的信息以及部署代码编译依赖库。
[0029]所述步骤7)中,客户端节点向管理节点发送的环境配置信息包括IP信息和OS信息。
[0030]一种基于docker容器技术的持续集成实现方法,包括以下步骤:
[0031]I)获取原生镜像;
[0032]2)设置用于管理docker容器的容器集群工具;
[0033]3)执行所述原生镜像,生成一个docker容器;
[0034]4)docker容器部署持续集成系统客户端插件,并配置相关环境参数;
[0035]5)对配置相关环境参数后的docker容器生成一个新镜像,并将该镜像推送至镜像仓库中,所述镜像仓库中包含多个新镜像;
[0036]6)容器集群工具启动所述镜像仓库中的一个新镜像,生成一个运行容器,成为持续集成系统的一客户端节点,配置所述客户端节点的网络映射;
[0037]7)持续集成系统的服务端作为管理节点,在所述管理节点中配置所述客户端节点的环境配置信息,完成构建任务。
[0038]所述相关环境参数的配置包括:配置管理节点的信息以及部署代码编译依赖库。
[0039]与现有技术相比,本发明具有以下有益效果:
[0040]1、容器可以说是操作系统的一个进程,但进程之间完全隔离且互不影响,无需像虚拟机环境那样,分配6G内存就实实在在的占用服务器6G内存,导致其他应用无法使用这些被标记为占用状态的硬件资源。它又具备虚拟机环境那样所有的程序运行环境,这样一来可以大大降低硬件成本的投入。
[0041]2、复制一个容器相当简单,只需要启动一个容器并赋一个新名称即可,不像虚拟机的迀移需要利用特殊工具进行长时间的转换。而且启动一个容器相当快,秒级就可以启动一个容器,不会像虚拟机那么复杂,这样一来可以简化持续集成的环境部署。
[0042]3、提高自动化程度,原先需要手动配置虚拟机环境的部分可以通过一次制作,脚本驱动的方式完成自动化,节省人力成本。
[0043]4、当构建任务过多时,持续集成系统也可能变成一个瓶颈,我们可以采取部署最小任务数量,即不在同一套构建系统里面把所有平台的包都构建出来,然后通过简单的复制这套系统来构建所有的平台包,非常轻松的解决持续集成系统的性能瓶颈。
[0044]5、综上所述,本发明可以高效的利用少量的硬件资源和投入少量的人力资源来保证出包的最优的时效性。
【附图说明】
[0045]图1为本发明的架构原理示意图。
【具体实施方式】
[0046]
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1