欢迎来试用咱们的开源项目 Cyclon

Hi , Caicloud 宣布开源其 CI/CD 平台 Cyclone,专一解决微服务架构下面向容器的 CI/CD 和版本管理问题。 Cyclone 项目是基于 K8S 的第一个 CI/CD 工具,完善了 K8S 生态圈。 Cyclone 在 Github 上的地址: https://github.com/caicloud/cyclone ,欢迎试用!git

关于 CI/CD 背景知识github

持续集成( CI )是一种软件开发实践,即团队成员常常集成他们的工做,每次集成都须要经过自动化的构建,包括编译、发布、自动化测试来验证,从而尽早的发现集成错误。持续交付( CD )是指频繁地将软件新版本交付给质量团队(或者用户)以供评审。若是评审经过,那么就发布到生产环境。每当代码库里有一个变化,若是能自动且随时触发以上过程,那就达成了持续发布( CD )。web

Docker 是一款基于 LXC 的容器引擎,自 2013 年开源以来,由于其易用性、高可移植性在开源社区很是火热。 Docker 将软件与其依赖环境打包起来,以镜像方式交付,让软件运行在“标准环境”中,这很是符合云计算的要求。各大 IT 巨头纷纷跟进,基于 Docker 容器技术创业公司也如雨后春笋, Docker 创造了一个崭新的容器云行业。 Docker 技术应用普遍。如,利用其隔离特性,为开发、测试提供一个轻量级独立沙盒环境进行集成测试。加速本地开发和构建流程,使其更加高效轻量化,开发人员能够构建、运行并分享容器,轻松提交到测试环境中,并最终进入生产环境。安全

Caicloud 的容器云 CI /CD 实践架构

Caicloud 做为国内领先的容器集群服务解决方案供应商,向用户提供企业级的 Claas 、 Containerizor 、 Cyclone 、 Cargo 、 Cubernetes 、 Clever 六大闭环服务。负载均衡

 

Cyclone 做为其中重要一环,是基于 Docker 容器沙盒隔离特性实现的持续集成,将软件与其依赖环境打包起来,以镜像方式交付,让软件运行在“标准环境”中,原生支持多种容器云平台持续交付的工具。具备如下特性:socket

全部编译、构建、测试、发布过程均以容器为载体,消除环境差别性。经过版本控制工具触发流水线持续集成;分布式

生成容器镜像并输出安全报告,确保构建的镜像安全可靠。全过程可视化,契合团队协做,提升研发效率;微服务

管理组件支持微服务多组件联合发布,使用图形化界面展现组件的依赖关系及联合发布的过程和状态,应用拓扑关系图形化;工具

基于发布策略和角色控制功能,提供灵活的持续部署方式。基于容器和镜像的版本控制,提供多种升级回滚策略。

Cyclone 实现原理

CI/CD 工做流

Cyclone 提供了丰富的 API 供 web 应用调用,经过 API 创建版本控制系统中代码库与 Cyclone 服务关联关系后,版本控制系统的提交、发布等动做会经过 webhook 通知到 Cyclone-Server ,启动一个基于 Docker in Docker 技术的 Cyclone-Worker 容器,在该容器中从代码库中拉取源码,按照源码中 caicloud.yml 配置文件,依次执行:

PreBuild :在指定编译环境中编译可执行文件;

Build :将可执行文件拷到运行环境容器中,打成镜像发布到镜像仓库中;

Integretion :使用 Build 阶段构建的镜像启动一个容器,启动持续集成所依赖的微服务容器进行集成测试;

PostBuild :启动一个容器执行一些脚本命令,实现镜像发布后的一些关联操做;

Deploy :使用发布的镜像部署应用到 Kubernetes 等容器集群 PaaS 平台。

构建过程日志能够经过 Websocket 从 Cyclone-Server 拉取;构建结束后 Cyclone-Server 将构建结果和完整构建日志经过邮件通知用户。

软件架构

Cyclone 软件架构以下图所示。每一个立方体表明一个容器。

Cyclone-Server 中 Api-Server 组件提供 Restful API 服务,被调用后须要较长时间处理的任务生成一个待处理事件写入 etcd ;

EventManager 加载 etcd 中未完成事件,监视事件变化,发送新增待处理事件到 WorkerManager 中; WorkerManager 调用 Docker API 启一个 Cyclone - Worker 容器,经过环境变量传入须要处理的事件 ID 等信息;

Cyclone-Worker 使用事件 ID 做为 token (有效期 2 小时)调用 API ,拉取事件信息依次启容器执行 integration 、 prebuild 、 build 、 post build ,完成后反馈事件执行结果,构建过程日志推送到 Log-Server ,转存到 Kafka ;

Log-Server 组件从 Kafka 拉取日志推送给用户;须要持久化的数据存入 Mongo 。

Cyclone 也能够多节点分布式部署,部署图以下所示。每个立方体表明一个节点,使用 Haproxy 反向代理实现负载均衡和 SSL 数据加密,分发 API 请求到各 Cyclone 节点中。

Roadmap

Cyclone 由 Caicloud 工程师自主研发,并贡献给社区(地址: https://github.com/caicloud/cyclone )。 Cyclone 现已实现基本功能发布早期版本 V0.1 。咱们计划在 2016 年 12 月底发布 V0.2 Kubernetes 版 Cyclone ; 2017 年第一季度发布 V0.3 提供 web 操做界面,后续还会开发用户权限管理,用户插件支持等功能。

扫描二维码进入到 Cyclone 社区

相关文章
相关标签/搜索