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

关键字:配置管理,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--------

你可能感兴趣的:(我所了解的几种持续集成方案)