基于 Docker 的 CI/CD 实践

基于 Docker 的 CI/CD 实践
Docker
Docker技术应用广泛,可以将软件与其依赖环境打包起来,以镜像方式交付,让软件运行在“标准环境”中。这一特性可以应用到持续集成中,实现原生支持容器云平台持续交付。本文将概述CI&CD;基本工作流程,软件整体框架以及实现原理。
Docker是一款基于LXC的容器引擎,自2013年开源以来,因为其易用性、高可移植性在开源社区非常火热。Docker将软件与其依赖环境打包起来,以镜像方式交付,让软件运行在“标准环境”中,这非常符合云计算的要求。各大IT巨头纷纷跟进,基于Docker容器技术创业公司也如雨后春笋,Docker创造了一个崭新的容器云行业。
Docker技术应用广泛。如,利用其隔离特性,为开发、测试提供一个轻量级独立沙盒环境进行集成测试。加速本地开发和构建流程,使其更加高效轻量化,开发人员可以构建、运行并分享容器,轻松提交到测试环境中,并最终进入生产环境。
CI
持续集成(Continuous integration,简称CI),是一种软件开发实践,即团队成员经常集成他们的工作,每次集成都需要通过自动化的构建,包括编译、发布、自动化测试来验证,从而尽早的发现集成错误。持续交付是指频繁地将软件新版本交付质量团队或者用户以供评审,如果评审通过,发布到生产环境。
优点
(1)快速发现错误。每完成一点更新,就集成到主干,可以快速发现错误,定位错误也比较容易。
(2)防止分支大幅偏离主干。如果不是经常集成,主干又在不断更新,会导致以后集成的难度变大,甚至难以集成。
CI&CD;基本流程
Circle提供丰富的rest API供Web应用调用;
通过API建立VCS与Circle服务关联后,VCS上的commit等动作会触发Circle构建;
VCS Provider组件从VCS拉取代码库中源码;
基于源码中配置文件CI配置启动需要的CI微服务容器进行集成测试;
集成测试通过后,进入Pre Build阶段在指定编译环境容器中编译可执行文件;
Build阶段中将可执行文件拷贝到指定运行环境容器中,打成镜像推送到Registry中;
Post build阶段会做一些镜像发布后的关联操作,比如推送运行依赖的静态资源文件到CDN中;
镜像发布后可以自动部署应用到Caicloud、Kubernetes、Mesos、Swarm等PaaS平台;
构建过程日志可以通过LogServer拉取;
构建结束构建结果可以发邮件通知用户。
Caicloud circle
整体框架
Circle整体框架如下图所示。Circle运行在容器中,与Kafka-ZooKeeper容器集群通信推送拉取构建过程日志,基础数据信息存储在mongo数据库容器集群中。在Circle内部:API Swagger组件提供在线Circle API说明帮助文档;API Server组件接收用户http请求,生成异步待处理事件记入Async Event Manager组件的事件队列中,并应答用户请求;Async Event Manager组件在检测到新的待处理事件创建后,根据事件具体操作类型调用CI&CD;组件提供的工具函数组装拼接成工作流水线,检测到事件完成后更新数据库中文档记录;在容器外运行一组Docker Daemon队列,各工作流水线独立使用一个Docker Daemon,以实现用户和事件隔离;CD&CD;组件会从Docker Daemon Queue中调度取出一个空闲Docker Daemon执行流水线任务,过程日志推送到Kafka指定的topic中;Log Server组件向用户提供一个获取日志的Websocket服务器,从Kafka拉取实时日志推送给用户。
Circle也可以多节点分布式部署,部署图如下所示。每一个立方体代表一个节点,使用Haproxy反向代理实现负载均衡和SSL数据加密,分发API请求到各Circle节点中。
参考链接
http://chuansong.me/n/810953051536

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值