文档章节

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

Caicloud
 Caicloud
发布于 2016/11/14 11:23
字数 1540
阅读 75
收藏 2

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

关于 CI/CD 背景知识

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

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

Caicloud 的容器云 CI /CD 实践

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

 

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

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

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

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

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

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 社区

© 著作权归作者所有

Caicloud
粉丝 18
博文 77
码字总数 153394
作品 0
杭州
程序员
私信 提问
¥100000以上‖【联想】知识QA社区功能开发(PHP)

联想的大项目,想来试试手的欢迎来报名。 【业务描述】 在我们的CCKB网站上实现一个知识QA社区功能,我们的PHPKB所有用户可以提问,所有用户可以回答问题。他们可以投票给出答案,提供一些奖...

开源中国众包平台
2018/12/27
1K
0
为什么很多人都感觉进华为那么难

其实华为是一个非常公平和开放的工作环境,公平,只要你能力强就可以在里面尽情的发挥,下面是深圳华为Android端的招聘,难吗,高吗,只要能力强,就可以来试一试,人生嘛,试试才会更精彩的...

tiananyungu
2016/12/09
5.1K
16
我开发了一个云爬虫开发框架,可以在云上编写和运行爬虫,求种子用户来拍砖

我觉得对于开发者来说,能脚本化编写爬虫是一件挺开心的事情( ̄▽ ̄)"。所以我们团队开发了一个专门让开发者用简单的几行 javascript 就能在云上编写和运行复杂爬虫的系统,叫神箭手云爬虫开...

数据工厂
2016/05/23
123
3
Windows全能终端神器MobaXterm

MobaXterm 又名 MobaXVT,是一款增强型终端、X 服务器和 Unix 命令集(GNU/ Cygwin)工具箱。 MobaXterm 可以开启多个终端视窗,以最新的 X 服务器为基础的 X.Org,可以轻松地来试用 Unix/L...

超人归来007
2018/12/16
0
0
南京源创会漂亮小姐姐辣么多,单身的你快来领走一个

5月13日刚结束上海站就奔赴南京,5月14日南京站活动详情查看这里,PPT下载查看文末链接。 刚出南京站,就感受到深圳没有的柳絮纷飞,倒别有南方城市的一番风味,OSC源创会时隔两年再次来到南...

Alaise
2017/05/16
4.8K
18

没有更多内容

加载失败,请刷新页面

加载更多

Dubbo-自适应拓展机制

背景 在 Dubbo 中,很多拓展都是通过 SPI 机制进行加载的,比如 Protocol、Cluster、LoadBalance 等,这些都是Dubbo的基础组件。这些基础组件的拓展不是在系统框架启动阶段被加载,而是拓展方...

rock-man
25分钟前
5
0
Kali安装fcitx输入法(五笔)

安装fcitx > sudo apt-get install fcitx-rime fcitx-config-gtk3 重启 > sudo reboot fcitx配置 效果就是这样 配置输入法切换 系统设置...

yeahlife
27分钟前
4
0
IE之css3效果兼容

本文转载于:专业的前端网站▷IE之css3效果兼容 一、兼容css阴影效果(ie滤镜) 1.Shadow,阴影 .shadow { -moz-box-shadow: 3px 3px 4px #000; -webkit-box-shadow: 3px 3px 4px #000; box-sha...

前端老手
30分钟前
4
0
NiushopB2C开源商城功能列表说明:

B2C单商户免费版:PC商城+微商城 B2C单商户标准版:PC商城+微商城组合套餐+阶梯优惠核销功能 B2C单商户企业版:PC商城+微商城拼团+组合套餐阶梯优惠+核销功能 B2C单商户分销版:PC商城+微商城...

niushop-芳
32分钟前
4
0
图片如何转GIF图片呢

如何将生活中拍摄的好玩有趣的图片制作成GIF动图呢?相信很多小伙伴都不知道要如何制作,其实制作方法非常的简单,下面分享一个图片转GIF动图的方法,希望这个方法能够帮助大家在与好友斗图时...

白米稀饭2019
39分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部