欢迎来试用我们的开源项目 Cyclone! - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
caicloud2015
V2EX    程序员

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

 
  •   caicloud2015 2016 年 11 月 14 日 4602 次点击
    这是一个创建于 3378 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    9 条回复    2016-11-15 16:58:52 +08:00
    zzwangsh
        1
    zzwangsh  
       2016 年 11 月 14 日
    支持
    caicloud2015
        2
    caicloud2015  
    OP
       2016 年 11 月 14 日
    @zzwangsh 感谢支持 比心
    thomaspaine
        3
    thomaspaine  
       2016 年 11 月 14 日
    我还以为是 Altera 的 cyclone 芯片……
    aheadlead
        4
    aheadlead  
      nbsp;2016 年 11 月 14 日
    @thomaspaine 就是……好像 FPGA 来着
    sup
        5
    sup  
       2016 年 11 月 14 日
    去瞅瞅~友情帮顶
    caicloud2015
        6
    caicloud2015  
    OP
       2016 年 11 月 15 日
    @aheadlead 隔了好几个好几个行业 -。-
    caicloud2015
        7
    caicloud2015  
    OP
       2016 年 11 月 15 日
    @sup thanks
    gaocegege
        8
    gaocegege  
       2016 年 11 月 15 日
    支持一个
    caicloud2015
        9
    caicloud2015  
    OP
       2016 年 11 月 15 日
    @gaocegege 哈哈哈 暴露了 -3-
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2179 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 44ms UTC 15:29 PVG 23:29 LAX 07:29 JFK 10:29
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86