美文网首页一起学起来
我所了解的几种持续集成方案

我所了解的几种持续集成方案

作者: iakuil | 来源:发表于2016-11-02 11:07 被阅读1167次

    关键字:配置管理,CI,CD,QA

    前言

    和几个TW的朋友共事一年多,学到了很多阳春白雪的东西,比如持续集成、DevOps,以及敏捷云云。
    自以为可以出师,结果在实施的过程中遇到很大的阻力,大部分同学不理解CI的作用,认为这是变相的传销
    如何让领导和程序员满意才是一套持续集成系统成功实施的关键。

    最简方案:GitHub + TravisCI + CodeCov + VPS

    GitHub不仅仅是一个代码托管网站,更是全世界最大的同性交友社区。替代方案:BitBuket
    Travis CI可以用GitHub账号登录,有助于理解持续集成的理念,文档是英文,但是很简单。替代方案circleci
    VPS推荐Linode,顺便搭建一个SS,但是由于某些原因,你可能还是需要阿里云
    代码测试覆盖率可以使用codecov(可选)。

    优点

    • 便宜
    • 完全不需要维护硬件。

    缺点

    • 访问外网不稳定。
    • GitHub、TravisCI和CodeCov都有收费项目。

    总结

    适合可以开源的小项目,主要是用来开拓眼界。

    初级方案:代码托管服务 + Jenkins + VPS

    如果觉得GitHub网速太慢,可以考虑使用国内的替代品,比如开源中国的马云,哦,sorry,是码云,或者CSDN的CODE。它们的私有仓库是完全免费的。
    随着业务的扩大,Travis CI的问题就开始显露出来:不稳定!特别是SSH通道。当然,这不是Travis CI的错,你懂的……
    这时候就可以考虑换成Jenkins了,在国内,持续集成基本就等同于Jenkins。
    除非特殊用途,VPS也请选择国内的。
    PS. 如果使用的是码云,可以配套使用开源中国提供的SonarQube,See:http://sonar.oschina.net/

    优点

    • 费用低(只需要VPS的费用)。

    缺点

    • 账号不通用,配置管理混乱。

    总结

    适合没有敏感信息的小项目。

    万精油:GitLab + Jenkins + Nexus + SonarQube + VPS/VMWare

    当公司步入正轨以后,一般就会有一套OA系统,比如基于LDAP的企业通讯录。这个时候就需要统一的配置管理和一个配置管理员(CMO)的角色。
    GitLab是比较成熟的解决方案,完全可以替代GitHub,Code Review的时候挺好使的。
    另外可以考虑增加构件仓库Nexus OSS和代码质量检查的平台SonarQube
    Nexus私服大家应该不陌生,缺点是没有官方的LDAP插件,但是对于大部分开发人员来说可以不关注,我们可以把私服地址配在公司级Root POM。
    SonarQube可以和Jenkins无缝集成,Jenkins的流水线应该包括一个QA Job,如果扫描出致命或者严重Issue直接失败。代码质量问题应该马上解决,而不应该留到Code Review。
    PS. Jenkins、GitLab和SonarQube都可以通过LDAP进行登录。

    优点

    • 费用适中。

    缺点

    • 无明显缺点。

    总结

    适合大部分的中小企业。

    终极方案:自建CI/CD流水线

    中大型企业不差钱,万事不求人,所以自建持续集成流水线就成为必然。
    首先说说万精油方案的局限(不算是缺点):

    • Jenkins、Nexus还有SonarQube最大的共性就是如出一辙的插件系统,特别是前面两个,完全是基于文件系统(主要是xml)的,当接入的项目越来越多,性能就会急剧下降。
    • 虽然可以通过LDAP登录,但是毕竟是完全独立的系统,无法做到单点登录。
    • 风格不统一,领导要看报表。

    最简单的做法就是给这些系统加层皮,这也是很多企业或者部门的做法。不过依然无法解决性能问题。
    现在来说说我所了解的一些方案:

    • Jenkins Job Builder
      OpenStack CI系统的核心,配合OpenStack自己的任务调度,把Jenkins做成了真正的分布式。See: Understanding the OpenStack CI System
    • CloudBees
      差不多是Jenkins的商业版,最大的特点是!哈哈,开玩笑,持续集成服务就没有便宜的。大致的做法就是workscpce共享高速磁盘。
    • Artifactory
      JFrog出品,可以用来替换Nexus,原生支持LDAP、分布式,需要安装数据库,一般大公司直接找他们(一般和Jenkins一起)定制开发。
    • Go CD
      TW出品,号称业界唯一能达到持续部署高度的平台,某为就有基于Go进行定制开发。

    优点

    • 成本高昂。

    缺点

    总结

    适合大中型企业。
    ---------EOF--------

    相关文章

      网友评论

        本文标题:我所了解的几种持续集成方案

        本文链接:https://www.haomeiwen.com/subject/uavmuttx.html