软件开发周期中需要一些可以帮助开发者提升速度的自动化工具。其中工具最重要的目的是促进软件项目的持续集成与交付。通过CI/CD工具,开发团队可以保持软件更新并将其迅速的投入实践中。
Jenkins是最著名的CI/CD系统工具,且能迅速的成为开发引擎,管理开发方面。Jenkins为插件开发提供便利,为扩展版本控制系统提供功能且为IBM提供支持。 由Sun Microsystems分离出来的Hudson项目首次推出Jenkins,其最新版本为2,提高可用性与安全性。
但是当涉及持续集成与持续交付时,Jenkins并不是唯一的选择。 CircleCI,、GitLab和 JetBrains 等公司也为开发者提供可用的CI/CD工具。
Atlassian Bamboo
Atlassian Bamboo提供丰富的功能,从构建与部署Docker Container在Amazon Web Services运行应用程序。专门的代理可被用于热修复和关键构建。可扩展性一直被视为Jenkins的眼中钉,在这里,Appfire的CEO Randall Ward,Atlassian商业合作伙伴提供附件组件和服务,提高Bamboo优势。
Atlassian确实提出了可扩展性,同时Jenkins用户曾发现Jenkins工具有“主要性能障碍”。Bamboo通过轮询代理和扩展代理功能。Appfire使用Bamboo作为瑞士军刀,与第三方附加组件集成测试,以及部署代码。
Bamboo功能代码显而易见,确保用户从之前最新的部署中查看完整的代码更改。它集成其他的Atlassian产品,包括Bitbucket Git代码管理解决方案、Jira项目管理解决方案和HipChat团队聊天应用程序。
CircleCI
CircleCI也强调了扩展性,除了它能测试一切,对移动应用程序进行Jasmin单元测试。CircleCI帮助开发者带来Docker文件到产品中。
CircleCI提供了一个编排层和一个工作流工具,可自动化代码更改且将代码推到数据中心。始于2011年,CircleCI开始作为多组织Saas选择。它是Jenkins的替代,用户无须管理自己的服务器,Ruby、Python和AJAX应用程序是它的强项。它现在可以在防火墙外部署,与Jenkins相反,它是开源的且是一个企业解决方案。CircleCI可扩展超出Jenkins所能处理的,其配置是在代码中编写的而不是在服务器中完成的。
Eclipse Hudson
Jenkins的前身,在Oracle移交项目的五年前Hudson是Eclipse Foundation管理的。Oracle继承了Hudson当其在2010年收购了Sun Microsystems,但Jenkins开发者并未在Oracle项目方向上取得一致。最新的更新是在2月,Hudson是用Java编写且运行在servlet容器上如Apache Tomcat。它可以使用版本控制工具如Git和Subversion。
“在Hudson团队中我们致力于加强Hudson在一个已开始的基础上,重点创建Hudson一个合适的平台为持续交付以及持续集成,“Eclipse的一位代表说。”因此,您将看到工具的新功能,特别涉及大型企业在规模和复杂的构建管道使用需求Hudson。”
根据Eclipse的一个案例研究显示,Hudson用户Cleo提供了业务集成软件和服务,评估Jenkins代替Hudson因为Jenkins维护大多数Hudson插件。“我们放弃了这个想法后,Jenkins的核心功能是比Hudson的更加不可靠,”Cleo发布工程师Stuart Lorber表示。
GitLab CI
在可用的SaaS或防火墙外,开源GitLab CI可以在任何平台上执行且支持语言,包括Unix、Windows,OS x。用户可以自动向上和向下扩展虚拟机进行即时处理和最小化。其他功能包括多语言支持、实时记录、每阶段管道定义多个作业和Docker支持,用于测试和构建Docker图像。另外可扩展性也是一个优势。
GitLab CI是GitLab code-hosting平台的一部分,旨在为持续集成提供简单的设置。设置CI曾经是乏味的,我们想让它非常简单。GitLab CI并不需要大量的管理,测试被执行在GitLab Runner中,用Go编写且提供多平台、多语言功能。
因为GitLab CI与GitLab集成,用户不需要建立新的项目。用户添加一个文件来描述你想要如何测试库。
JetBrains TeamCity
JetBrains TeamCity CI/CD服务器集成工具如Apache Maven创建管理和JetBrain自己的YouTrack问题追踪工具。我们提供完整的体验与内置的功能插件。
TeamCity 不是开源的,有一个Web界面和管理功能。
该平台有IDE插件适用于Eclipse、Microsoft Visual Studio、和 JetBrains IntelliJ。还提供动态测试报告。TeamCity是一个产品且已存在10年。由JetBrains衍生出并进化为很成熟的产品。
ThoughtWorks GoCD
ThoughtWorks GoCD是一个开源的持续交付系统,它提供了一个“材料清单”部署。代理网格同时通过管道和版本提供并行处理,模板允许重用配置管道。它支持CD,开箱即用,无须安装其他的插件。
GoCD与Jenkins不同之处在于它是部署管道以及简化持续交付,GoCD可被安装或建立在云上。
ThoughtWorks Snap
ThoughtWorks Snap提供基于云的持续集成和交付的功能。Snap在云计算中完全是人来操作的,它是面向用户“无须任何基础设施”。托管部署可以被设置在云平台中,包括GitHub、Amzaon Web Services、DigitalOcean和Heroku。合并请求被测试以确保其完全合并。
Snap在GitHub上是免费使用公共存储,其中有一个负载使用私有存储。近期,Docker支持增加到Snap,Docker的图片通过软件交付和部署可被使用。