7款不错的 CI/CD工具

6,111 阅读14分钟
原文链接: mp.weixin.qq.com

时至今日,越来越多的工程团队开始实行敏捷开发,借以推动更短、更快的发布周期。而代码库的增长与更高的生产构建频率,也带动持续集成与持续部署/交付工具快速兴起。 如果您有意提升发布频率,或者是不太清楚哪些工具能够帮助您达成这一目标——别担心。在今天的文章中,我们将探讨一系列最流行的CI / CD工具,并对其特性作出剖析。

 

什么是CI / CD?其意义何在?

在深入研究CI / CD自动化工具之前,我们首先需要了解其基本概念。正如我们所提到的,持续集成和持续部署通常与敏捷开发环境齐头并进。在这类环境中,团队希望在构建完成后立即将不同的代码段部署到生产环境中。  使用CI / CD工具可自动完成构建,测试和部署新代码的过程。即使只更改了其中一行甚至是一个字符,团队成员都可以立即获得有关其代码生产准备情况的反馈。如此一来,每位团队成员都可以将他们的代码推送到生产体系当中,而构建,测试和部署的过程则自动完成,以便他们放心大胆地继续处理应用程序的下一部分。  但在为工作流添加自动化的过程中,将代码部署到生产环境中并不意味着万事大吉。您必须继续追踪错误情况,从而真正让新功能为用户服务。对于大多数团队而言,在生产中进行调试是一项需要手动执行且异常繁琐的任务,需要他们投入数小时甚至数天全程关注日志筛选工作。但是,现在我们可以通过大规模自动化方式实现根本原因分析,了解错误发生的位置、时间以及根本性原因。 了解到在我们的工作流程中使用CI模型实现自动化的重要意义,接下来就要看看哪款工具最符合我们的实际需求了。

 

Jenkins

Jenkins是CI市场中最知名且最常见的名号之一。其最初是由Sun公司的一位工程师打造的一个辅助项目,并迅速扩展为最大的开源CI工具之一,可帮助工程团队实现自动化部署。顺带一提:我们OverOps也在使用Jenkins以及自己开发的CLI工具。  它有什么作用? 与其它CI工具一样,Jenkins可以自动构建、测试及部署任务。该工具支持Windows、Mac OSX以及各类Unix系统,可以使用本机系统软件包以及Docker进行安装,也可以在安装了Java Runtime Environment(JRE)的任何机器上独立安装。 在实践方面,Jenkins允许团队中的任何成员将他们的代码推送到build当中,并立即获得其准备情况的反馈。当然,在大多数情况下,您的团队需要通过自定义要求对Jenkins进行一些调整和定制。  Jenkins的强大之处体现在其丰富的插件生态系统上。它提供超过1000款插件选项,可以集成几乎所有市场上可用的工具和服务。作为一款开源工具,您还可以选择自定义适合自身情况的解决方案——就像我们一样。然而,大家需要投入一定时间与精力来确保它适合您的实际需求。 价格:免费  一点补充:我们要再次强调:开源+插件=社区。您可以想到的任何配置、工作流程、需求或者愿望,都可以在Jenkins及其插件的帮助下成为现实。  一句话总结:如果您正在寻找便宜(免费!)的CI解决方案,并愿意投入精力来定制您的环境并需要用户社区的支持,Jenkins无疑是您的最佳选择。 标准Jenkins工作清单

 

Travis CI

Travis CI是CI / CD生态系统中比较常见的名号之一,最初设定为开源项目,并在多年扩展之后转为闭源项目。它专注于CI工作,通过自动化测试和警报系统提高构建过程的效能。 它有什么作用? Travis-CI允许用户在部署代码时对代码进行快速测试。它支持代码大小变更,可识别构建与测试中发生的一切变更。检测到变更后,Travis CI可以提供有关变更是否成功的反馈。  开发人员可以使用Travis CI对运行时进行观察,并行运行多项测试,并将该工具与Slack、HipChat以及Email等集成,从而通过多种渠道获取问题或构建失败通知。  Travis CI支持容器构建,并支持Linux Ubuntu和OSX。您可以在不同的编程语言中使用它,例如Java,C#,Clojure,GO,Haskell,Swift,Perl等等。其具备一份相对有限的第三方集成列表,但由于关注重点在于CI而非CD,因此其可能解决不了您的实际问题。  价格:虽然Travis CI为开源项目且提供免费支持,但同时亦提供专有版本,价格从自助版本的69美元/月到高级版本的489美元/月不等。  一点补充:为确保始终备份最近的构建版本,Travis CI会在您运行新构建时将GitHub存储库克隆到新的虚拟环境中。 一句话总结:如果您的代码是开源的,并且您更关注构建中的持续集成部分,那么Travis CI值得一试。 Travis CI仪表板

 

Circle CI

Circle CI是一款基于云的工具,可自动执行集成和部署任务。它还强调在部署之前对代码中的每项变更进行测试,且使用多种方法——如单元测试、集成测试与功能测试等。该工具支持容器、OSX以及Linux环境,可以在私有云或您自己的数据中心内运行。 它有什么作用? Circle CI能够与您当前的版本控制系统(如GitHub,Bitbucket等)集成,并在检测到变更时运行多种操作。其支持的变更方式包括提交,打开PR或任何其他代码更改。  每项代码更改都会根据您的初始配置和首选项创建build,并在洁净容器或虚拟机中运行测试。每个build都将接受多项操作处理,包括依赖性检查、测试与部署等。如果build通过测试,则可以通过AWS CodeDeploy、Google容器引擎、Heroku、SSH或您选择的任何其他方法进行部署。 存在问题的build和测试结果将通过Slack,HipChat,IRC或多种其他集成频道进行发送,团队可以借此快速了解变更结果。需要强调的是,Circle CI在配合各类不同语言时,可能要求进行一些调整与更改,因此建议大家首先查看所选语言的说明文档。  价格:对于Linux用户,第一套容器是免费的,每套额外容器每月50美元。对于构建1-5个build/天的团队,以及私人数据中心或云计算环境,OSX版本起价为39美元/月,年度合同的价格为每用户35美元/月。 一点补充:Circle CI可以自动清除GitHub上的冗余build。如果在同一分支上触发了较新的build,则该工具会识别并取消正在运行或排队的旧build——包括尚未完成的build。  一句话总结:如果你正在寻找一款GitHub友好型工具,要求它背后拥有广泛的社区,并可以在私有云或您自己的数据中心内运行,那么Circle CI绝对值得一试。 Circle CI仪表板

 

TeamCity

TeamCity是由JetBrains开发的CI / CD服务器。其提供“开箱即用”的持续集成功能,并允许用户根据自己的需要实现适配。它支持多种语言(Java,.NET,Ruby等),而JetBrains也为其提供多款支持工具与出色的说明文档。  它有什么作用? 作为CI / CD工具,TeamCity旨在改善发布周期。有了它,您可以即时查看测试结果,查看代码覆盖率并查找重复项,同时自定义builod持续时间、成功率、代码质量及其他基于统计信息的自定义指标。  一旦TeamCity在您的版本控制系统中检测到更改,它就会向队列添加build。服务器找到空闲且兼容的build代理,并将排队中的build分配给此代理。此后,由该代理执行构建步骤。 在此过程中,TeamCity服务器会记录各项日志消息、测试报告以及正在进行的其他更改。这些更改会实时保存并上传,意味着用户可以在build更改时了解构建过程中发生的情况。该工具还提供了在不同平台和环境中同时运行并行buld的选项。  价格:专业服务器许可免费提供,其中包括100套build配置、对所有产品功能的完全访问权限、通过论坛和问题跟踪器获得支持以及3个build代理。企业服务器许可起价为1999美元,且您需要的代理数量越多,价格也会随之提高。 一点补充:TeamCity附带有gated提交选项,可以防止开发人员破坏版本控制系统中的源代码。其具体原理是在提交之前,首先以远程方式运行build实现本地变更,从而确保提交内容不存在破坏性风险。  一句话总结:TeamCity在过去几年中越来越受欢迎,并为市场上的其他CI工具带来了不错的发展方向指引。如果您有兴趣追踪构建与测试过程,或者想要一套免费且功能强大的CI解决方案,毫无疑问TeamCity值得一试。 TeamCity仪表板

 

Codeship

Codeship对CI / CD有着不同的看法,并提供托管持续集成即服务方案。该工具最初是为Rails开发人员提供持续集成平台而构建的; 当时,他们需要在GitHub上托管自己的代码并将其部署到Heroku。由于极高的人气与旺盛的需求,该公司多年来一直不断扩展以支持其他技术方案。 它有什么作用? Codeship有两种不同的产品,每种都有其优缺点。Codeship Basic允许通过Web UI和交钥匙部署连接代码库以设置CI / CD流程。它支持预配置CI环境,并允许多个不同的build在同一构建虚拟机上运行。  Codeship Pro使用Docker定义CI / CD环境,借此运行构建管道。它具有对构建环境的完全控制能力,允许您定义在其中运行的具体内容。Pro版本还提供预分支缓存,设置对哪些镜像以及工作流的哪个部分进行缓存,且支持并行部署。  整体而言,Codeship支持多种语言,例如Java、Go、Node.js、Python以及Ruby等。在部署方面,Basic版本支持AWS、Heroku、Azure和Kubernetes,而Pro还额外支持AWS ElasticBeanstalk、Google App Engine以及Digital Ocean。  价格:免费计划每月支持100个代码更新版本,且对项目、用户及团队数量不做限制。它还提供并发构建和并行测试管道。根据您需要的并发构建和并行测试管道数量,Basic与Pro版本的价格在49美元至79美元/月之间。 一点补充:Codeship提供一整套实用程序、脚本及Docker镜像集合,可以与该工具一起使用。该公司指出,其中一些还能够与其他类似的工具一同使用。此集合包括可自定义的外部服务部署脚本,用于安装默认情况下未包含在构建虚拟机上的特定软件版本的脚本等。 一句话总结:在同一名头之下提供2种不同的工具可能看起来有点奇怪,但这也使得开发人员可以选择更适合不同类型客户的各种元素。由于Basic和Pro皆为免费提供,因此对于您的CI需求来说,这应该是个不错的选择。 Codeship仪表板

 

GitLab CI

GitLab亮相后不久,该团队即推出了持续集成服务GitLab CI。除了测试和构建项目之外,该工具还可以将build部署到您的基础设施当中。而且只要了解各具体代码段的位置,您就能够对其开展针对性追踪。 它有什么作用? GitLab CI作为GitLab的一部分免费提供,且设置过程相当便捷。要开始使用GitLab CI,您首先需要将.gitlab-ci.yml文件添加到代码库的根目录,同时配置GitLab项目以使用Runner。之后,每次提交或推送都将触发包含以下三个步骤的CI流程:构建,测试和部署。 每个build的可以分为多个作业,并且可以在多台机器上并行运行。该工具可以立即反馈build的测试结果,让用户知道出现了什么问题或者过程中是否存在问题。  价格:社区版免费提供。对于包含发行板、代码审查期间多项批准、高级语法搜索以及其它一些功能的版本,起价为3.25美元/月。 一点补充:GitLab(和GitLab CI)是一个开源项目。换句话说,您可以访问并修改GitLab 社区版及企业版的源代码。  一句话:如果您正在使用GitLab,那么尝试将GitLab CI解决方案作为其中的一部分无疑是种明智之举。 GitLab CI仪表板

 

Bamboo

Bamboo是Atlassian产品套件的一部分。与其他工具类似,它也提供代码的构建,测试和部署功能并支持多种语言。它与其他与CI周期相关的Atlassian产品(如JIRA和Bitbucket)拥有强大的集成能力/协同效应。 它有什么作用? 构建,测试和部署都是Bamboo软件包的一部分,测试部分是在Bamboo Agents的帮助下完成的。与Java监控机制中的代理类似,Bamboo也提供两种代理类型:本地代理作为Bamboo服务器进程的一部分运行,而远程代理则在其他服务器与计算机上运行。每个代理都被给予与其功能相匹配的build,这意味着用户可以将不同的代理分配给不同的build。 Bamboo的主要优势在于同Atlassian其他产品(如JIRA和Bitbucket)的紧密联系。使用Bamboo,您可以看到自上次部署以来引入的代码更改和JIRA问题。这样,开发人员就可以同步自己的工作流程、始终保持代码正常运行,并了解下一个版本的开发方向以及需要修复的部分。 价格:Bamboo定价由代理的数量决定。无限制本地代理的基础定价为10美元,最多10项作业,没有远程代理功能。下一级别为800美元,提供无限作业与本地代理数量,以及1个远程代理。远程代理数量越高,价格也将随之增长,但最高不会超过44000美元。  一点补充:Bamboo拥有Atlassian的强大支持,并可与该公司现有产品配合起来建立理想的工作流程。如果您想以无缝方式将JIRA和Bitbucket添加到您的CI流程,并且愿意为此付费,那么Bamboo值得一试。  一句话总结:只要愿意接受付费方案,并将其与Bitbucket和JIRA配合使用,Bamboo就是一款极为强大的工具。 Bamboo仪表板

总结

对更快、更短发布周期的要求,促使开发团队必须找到能够支持新型软件交付方法的工具与工作流程。每周、每天甚至每小时发布生产成果也意味着将有更多错误出现在生产体系当中。现在,大家已经熟悉了CI / CD工作流程,下一步则应检查完整CI / CD工具链中缺少的环节,以及如何将其添加到工作流程中。 原文链接:https://blog.takipi.com/jenkins-vs-travis-ci-vs-circle-ci-vs-teamcity-vs-codeship-vs-gitlab-ci-vs-bamboo/