如果你很熟悉“持续集成”,一定会同意这样的观点:“使用它已经成为一种强制”。如今有很多持续集成工具,在这篇文章中,我们将介绍几款流行的持续集成工具。阅读本篇文章后,你会有对这些CI工具有一个更好的了解,知道他们能够为你提供什么功能,从而选出最适合你需求的一款持续集成工具。
接下来将依次介绍8款持续集成工具(介绍的顺序没有任何含义):
Jenkins
Jenkins是一款用Java编写的开源的CI工具。当Oracle收购Sun Microsystems时,它作为Hudson的分支被开发出来。Jenkins是一个跨平台的CI工具,它通过GUI界面和控制台命令进行配置。
Jenkins非常灵活,因为它可以通过插件扩展功能。Jenkins插件非常好用,同时你可以容易地添加自己的插件。除了它的扩展性之外,Jenkins还有另一个非常好的功能——它可以在多台机器上进行分布式地构建和负载测试。Jenkins是根据MIT许可协议发布的,因此可以自由地使用和分发。Cloudbees还提供Jenkins in Cloud形式的托管解决方案。
总结:Jenkins是最好的持续集成工具之一,它既强大又灵活。学习它可能要花费一些时间,但是如果你需要一个灵活的持续集成解决方案,那么学习如何使用它将是非常值得的。
官方网址:Jenkins
可用性:免费
平台:跨平台
TeamCity
TeamCity是一款成熟的CI服务器,来自JetBrains公司。 JetBrains已经在软件开发世界中建立了权威,他们的工具如WebStorm和ReSharper正被全球的开发者所使用。
TeamCity在它的免费版本中提供了所有功能,但仅限于20个配置和3个构建代理。额外的构建代理和构建配置需要购买,你可以在这里找到价格。
TeamCity安装后即可使用,可以在多种不同的平台上工作,并支持各种各样的工具和框架。 能够支持JetBrains和第三方公司开发的公开的插件。尽管是基于Java的解决方案,TeamCity在众多的持续集成工具中提供了最好的.NET支持。TeamCity也有多种企业软件包,可以按所需代理的数量进行扩展。
总结:整体而言是TeamCity是非常好的持续集成解决方案,但由于其复杂性和价格,更适合 企业需求。
官方网站:TeamCity
可用性:3个代理和20个构建配置是免费的,额外的代理和配置需要付费
平台:Servlet容器(本地)
Travis CI
Travis CI是最老的托管解决方案之一,赢得了很多人的信任。虽然它主要以托管解决方案而闻名,但它也以企业包的形式提供内部版本。
Travis CI对GitHub上托管的所有开源项目以及前100个版本的构建都是免费的。有几个定价计划可以供你选择,它们之间主要区别是你可以运行的并发构建数量。
Travis CI的构建通过.travis.yml文件进行配置,该文件包含了在构建时所需要执行的任务。它能够支持多种语言并提供完善的帮助文档。
总结:一个成熟的解决方案,提供托管和本地变种,被许多团队喜爱和使用,非常有据可查。
官方网站:Travis CI
可用性:对开源计划和前100个版本的构建是免费的,其他的服务需要付费
平台:托管和本地
Go CD
Go是ThoughtWorks公司最新的Cruise Control的化身。除了ThoughtWorks提供的商业支持,Go是免费的。它适用于Windows,Mac和各种Linux发行版
让Go脱颖而出的是它的流水线概念,使复杂的构建流程变得简单。关于流水线概念是如何帮助持续交付,以及如何与Jenkins的流水线流程进行比较,您可以在这里阅读到相关内容。它最初的设计时就支持流水线概念,消除了构建过程的瓶颈,并能够并行地执行任务。
总结:Go CD非常适合复杂场景,并且能够免费提供付费的支持。
官方网站:Go CD
可用性:免费提供付费的支持
平台:Windows,Mac和一些Linux发行版
Bamboo
Atlassian是专注于为软件开发团队提供工具的公司,你或许已经通过JIRA和Bitbucket了解到了他们。Bamboo最初提供了云端和本地两种持续集成的解决方案,但在2016年5月,云端版本不再支持Bitbucket Pipeline。Bitbucket Pipeline能够支持Docker, 是一个非常高效且快速的持续集成解决方案,正在迅速发展,是Bamboo云端版本的有利继承者。
Bamboo可以免费试用30天。作为Atlassian工具,它能够很好地支持JIRA和BitBucket,甚至可以将Jenkins配置轻松地导入到Bamboo中。
总结:Bamboo是一款本地CI工具。其原本的云段解决方案被Bitbucket pipeline所取代。有30天的免费试用,在此之后可以进行付费使用。
官方网站:Bamboo
可用性:付费免费试用
平台:本地
GitLab CI
GitLab CI是开源的Rails项目GitLab的一个组成部分,由GitLab公司将它带到了大众的视野中。 GitLab托管在GitLab.com上,GitLab.com提供了免费的托管服务,并且提供了git仓库存储和管理功能,如访问控制,问题跟踪,代码评论等。
GitLab CI能与GitLab完全集成,可以通过使用GitLab API轻松地作为项目的钩子。GitLab的执行部分(流程构建)使用Go语言编写,可以运行在Windows,Linux,OSX,FreeBSD和Docker上。
官方的Go Runner可以同时运行多个作业,并具有内置的Docker支持。 Gitlab CI有两个版本:开源的GitLab社区版和GitLab企业版。
总结:GitLab CI是一款令人印象深刻的托管工具,提供了免费版本和企业版本。
官方网站:GitLab CI
可用性:免费和付费
平台:托管(可以在Gitlab.com上托管)
CircleCI
CircleCI也来自GitLab公司,是另一款云端的持续集成管理工具。CircleCI目前仅支持Github管理,它能够支持的语言包括:Java, Ruby/Rails, Python, Node.js, PHP, Haskell, and Skala。
CircleCI和其他持续集成工具不同的地方在于他们提供服务的方式。CircleCI需要付费的主要是它的容器。你可以免费使用一个容器,当你开始使用更多容器的时候,你可以选择你所需要的并行化级别来加速你的应用。
主要有5个并行化级别可以供我们选择: 1x, 4x, 8x, 12x and 16x。你可以选择用16个容器进行一个项目的构建,此时并行化级别就为16x,当然你也可以用16个容器同时进行4个项目的构建,此时并行化级别为4x,如何选择取决于你。同时CircleCI也能够支持Docker。
总结:CircleCI是一个灵活的云端CI工具,提供的最大并行化级别为16x。当你需要快速地进行项目构建时它将是一个不错的选择,同时它的价格也不是很贵。
官方网站:CircleCI
可用性:免费和付费
平台:托管
Codeship
Codeship是一个本地的持续集成解决方案。它有两种不同的版本:基本版和专业版。在基本版中提供了安装即用的持续集成服务但是不能够支持Docker,它的主要用途就是通过UI来进行应用的构建等操作。专业版本提供了更灵活的功能以及Docker支持。
在基本版中有几个可选的付费包,越贵的付费包并行能力越好。在专业版本中你可以选择你的实例类型和并行级别(最高的级别为20x),价格稍微有点贵,但是大多数的团队应该会需要这种并行化构建的功能。
总结:Codeship是一个强大的带有Docker支持的本地持续集成解决方案
官方网站:Codeship
可用性:每个月的前100次构建免费,后续的构建需要付费
平台:托管
Codefresh
上面所提到的很多工具都能够支持Docker,但Codefrsh从设计到开发都将容器的理念贯彻其中。
Codefresh的开发者们从一开始就意识到Docker会广受欢迎。Codefresh除了能够在现有的Docker文件中工作外,你也可以选择几个不同的模板来轻松地的将你的项目迁移到docker容器中。它的UI非常的干净和容易理解,你可以很容易地上手。
之所以将Codefresh介绍给你们的原因在于它有一个让人非常惊喜的功能。这个功能就是将你的镜像发布到一个临时的环境中。当项目被建立时,它的镜像也被建立了,你可以发布这个镜像并观察它是如何工作的。那意味着你可以得到一个临时的工作环境,而不需要一个额外的虚拟机,这就是它非常棒的地方。
Codefresh是一款比较新的工具,有很多能够改进的地方和新的特性可以增加。但是它把容器作为它的重要组成部分使得它对任何一个打算使用Docker容器的团队来说都将是一个非常好的持续集成解决方案。
总结:Codefresh是一个支持Docker的持续集成工具,它可以发布和建立本地环境的Docker镜像。
官方网站:Codefresh
可用性:每个月的前200次构建,5个并发的构建和一个本地环境是免费的,额外的服务需要付费。
平台:本地
那么,对于你和你的团队来说,完美的持续集成工具是什么?
在为您的项目选择正确的CI工具时,需要牢记几件事情:
本地解决方案为构建过程提供了足够的灵活性,并且项目信息能被存储在本地。这对你来说可能并不重要,但在某些情况下,对某些公司来说,这可能是强制性的。
另一方面,托管解决方案不会提供太多的设置选项和更大的可扩展性,因为您不需要硬件来托管它们。
另一个重要的事情是是否支持Docker。 Docker革新了我们分发应用程序的方式,并成为不可忽视的一项技术手段。尽管上面所提到的绝大多数工具都支持Docker,但有些工具会比其他工具更能够支持Docker。
最后一个容易被忽视的方面是用户界面。上述中的一些工具比其他工具更容易使用。任何一个好的CI工具的主要作用之一就是使构建过程更容易,因此UI操作不应该很难或复杂。