一种基于Docker的持续集成方法与流程

文档序号:14685855发布日期:2018-06-14 21:42

本发明涉及自动化运维技术领域,具体涉及一种基于Docker的持续集成方法。



背景技术:

面对越来越复杂的业务,面对越来越多样化的用户需求,不断扩展的IT应用不论是规模还是数量都和以前不在一个数量级,单靠人工运维已经无法满足在技术、业务、管理等方面的要求.目前的IT运维管理模式经常让IT部门疲惫不堪,主要表现在以下两个方面:

(1)运维人员被动、效率低

在IT运维过程中,只有当事件已经发生并已造成业务影响时才能发现和着手处理,这种被动“救火”不但使IT运维人员终日忙碌,也使IT运维本身质量很难提高,导致IT运维的服务满意度不高。IT运维人员日常大部分时间和精力是处理一些简单重复的问题,而且由于故障预警机制不完善,往往是故障发生后或报警后才会进行处理,使到IT运维人员的工作经常是处于被动“救火”的状态,不但事倍功半而且常常会出现恶性连锁反应。

(2)缺乏高效的自动运维技术工具

随着信息化建设的深入,IT系统日趋复杂,林林总总的网络设备、服务器、中间件、数据库、业务系统等让运维人员难以从容应对,即使加班加点地维护、部署、管理也经常会因设备出现故障而导致业务的中断,严重影响业务的正常运转。出现这些问题部分原因是缺乏事件监控和诊断工具等自动化运维技术工具,因为在没有高效的技术工具的支持下,使到问题出现后很难快速、准确地找到根本原因,也很难得到主动、快速处理。



技术实现要素:

本发明要解决的技术问题是:本发明提供一种基于Docker的持续集成方法。

本发明所采用的技术方案为:

一种基于Docker的持续集成方法,所述方法基于docker技术,通过在Heroku上运行的持续集成/持续部署(CI/CD)系统工具,将新开发的代码部署到服务器,步骤如下:

1)创建一个本地组件;

2)推送代码到git仓库的feature/development分支;

3)通过持续集成引擎Shippable检测到有提交(commit)时,通过pull操作获取最新的代码并且运行相关的测试;

4)如果测试全都通过了等着被部署到生产环境中,就会创建一个合并(merge)分支的请求并且执行该合并(merge);

5)持续集成引擎Shippable检测到有到主机(master)分支新的提交时,会同时执行测试,并且推送源码到Heroku的git仓库中;

6)Heroku将会自动构建这个应用程序并且部署。

所述工具可以使用barservice,ThreeBar,可以在Heroku上运行持续集成/持续部署(CI/CD)系统。

所述本地组件通过使用Tutum进行创建。

Tutum,一种业务流程服务,是一个能帮助管理容器部署工作流的服务形式。Tutum同时也整合了CI/CD组件,并且支持git推送(push)。

Tutum拥有需要进行CI/CD的几个关键组件:

一个私有的为容器镜像准备的注册中心;

当新的镜像推送到注册中心的时候重新部署容器;

简便的容器扩容(在界面视图上,可以通过滑动N或M的方式调整容器大小);

在Tutum的界面上添加节点。

所述Tutum部署过程如下:

1)部署Tutum代理:

先安装Tutumagents,启动所有需要使用的服务;这样在Tutum的仪表盘上就能看到Bringyourownnode字样的按钮;

通常在某一个节点运行上述命令自动添加到Tutum账户,与此同时进程也会自动添加到其他节点(每次当你点击Bringyourownnode按钮的时候);

可以通过点击节点名称来标记一个节点,添加的标记将会显示在左侧边栏;

2)部署一个GitlabCI运行引擎:

通过Tutum来部署一个GitlabCI运行引擎,能够在这个容器中运行Docker,并且能够构建的Docker镜像;在建立GiLabCI运行引擎前,确保已经存在一个GitLab的实例仓库,并且能够同时运行GitLabCI引擎;

3)创建一个GitLabCI任务:

在GitlabCI上添加一个实际的脚本,目的是建立一个持续集成/持续部署的工作流,可以使用Docker镜像来构建Docker容器,然后上传到镜像库,Tutum提供的私有镜像库;

4)自动部署:

在Tutum上打开\"AutoRedeploy\"开关,配置所有的服务端口,环境变量,链接和卷标,然后点击部署,确保重启后还可以继续使用。

注:Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似iPhone的app)。几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,他们不依赖于任何语言、框架包括系统。

Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。Git是LinusTorvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。

Heroku是一个支持多种编程语言的云平台即服务。在2010年被Salesforce.com收购。Heroku作为最开始的云平台之一,从2007年6月起开发,当时它仅支持Ruby,但后来增加了对Java、Node.js、Scala、Clojure、Python以及(未记录在正式文件上)PHP和Perl的支持。基础操作系统是Debian,在最新的堆栈则是基于Debian的Ubuntu。

GitLab是一个用于仓库管理系统的开源项目。使用Git作为代码管理工具,并在此基础上搭建起来的web服务。

gitlab-ci是为Gitlab提供的持续集成服务器。

本发明的有益效果为:

本发明解决了运维人员被动、效率低的问题,提供了高效的自动运维技术工具,在运维过程中问题出现后能够快速、准确地找到根本原因,做到主动、快速处理。

具体实施方式

下面通过具体实施方式对本发明进一步说明:

实施例1:

一种基于Docker的持续集成方法,所述方法基于docker技术,通过在Heroku上运行的持续集成/持续部署(CI/CD)系统工具,将新开发的代码部署到服务器,步骤如下:

1)创建一个本地组件;

2)推送代码到git仓库的feature/development分支;

3)通过持续集成引擎Shippable检测到有提交(commit)时,通过pull操作获取最新的代码并且运行相关的测试;

4)如果测试全都通过了等着被部署到生产环境中,就会创建一个合并(merge)分支的请求并且执行该合并(merge);

5)持续集成引擎Shippable检测到有到主机(master)分支新的提交时,会同时执行测试,并且推送源码到Heroku的git仓库中;

6)Heroku将会自动构建这个应用程序并且部署。

所述工具可以使用barservice,ThreeBar,一个可以在Heroku上运行持续集成/持续部署(CI/CD)系统。

实施例2:

在实施例1的基础上,本实施例所述本地组件通过使用Tutum进行创建。

Tutum,一种业务流程服务,是一个能帮助管理容器部署工作流的服务形式。Tutum同时也整合了CI/CD组件,并且支持git推送(push)。

Tutum拥有需要进行CI/CD的几个关键组件:

一个私有的为容器镜像准备的注册中心;

当新的镜像推送到注册中心的时候重新部署容器;

简便的容器扩容(在界面视图上,可以通过滑动N或M的方式调整容器大小);

在Tutum的界面上添加节点。

实施例3:

在实施例2的基础上,本实施例所述Tutum部署过程如下:

1)部署Tutum代理:

先安装Tutumagents,启动所有需要使用的服务;这样在Tutum的仪表盘上就能看到Bringyourownnode字样的按钮;

通常在某一个节点运行上述命令自动添加到Tutum账户,与此同时进程也会自动添加到其他节点(每次当你点击Bringyourownnode按钮的时候);

可以通过点击节点名称来标记一个节点,添加的标记将会显示在左侧边栏;

2)部署一个GitlabCI运行引擎:

通过Tutum来部署一个GitlabCI运行引擎,能够在这个容器中运行Docker,并且能够构建的Docker镜像;在建立GiLabCI运行引擎前,确保已经存在一个GitLab的实例仓库,并且能够同时运行GitLabCI引擎;

3)创建一个GitLabCI任务:

在GitlabCI上添加一个实际的脚本,目的是建立一个持续集成/持续部署的工作流,可以使用Docker镜像来构建Docker容器,然后上传到镜像库,Tutum提供的私有镜像库;

4)自动部署:

在Tutum上打开\"AutoRedeploy\"开关,配置所有的服务端口,环境变量,链接和卷标,然后点击部署,确保重启后还可以继续使用。

以上实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。

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