常用ci持续集成工具对比
开发人员喜欢把写的代码当成自己的孩子,他们会被当成艺术品一样呵护。作为家长,总是会认为自己的孩子是最好的,也会尽全力给自己的孩子最好的,就算有时候会超出自己的能力范围。
最终,孩子会走出去,和其他的小朋友一起玩,在某些时候,各家的孩子都可以按照自己的想法玩耍,但是有时候,冲突无法避免,此时由谁去解决他们之间的整合问题呢?这就是我们要说的集成,而持续集成(CI)及其自动化工具的全部目的是将代码从测试、构建、部署和交付的障碍中解放出来。
随着项目的增长,需要集成的东西会越来越多,此时代码走查,冲突解决以及合并,问题回溯等任务甚至会花费比编写代码更多的时间。CI旨在帮助开发人员克服集成困难,并将注意力集中在他们喜欢做的事情上:编写代码。
CI是一种开发实践,它要求编码人员每天数次将他们的工作集成到一个远程仓库中。CI工具会验证和测试每次提交的代码,并报告错误,允许团队成员快速解决错误。
市场上有很多这样的工具,它们之间有很多差异,因此为开发团队选择合适的工具不是一件容易的事情。然而,你可以通过以下方面评估工具是否符合要求:
- 设置简单
- 容易使用
- IDE集成
- 方便扩展的插件系统
我们来看看目前的主流 CI 工具有哪些。
# Jenkins
Jenkins是一个流行的、开源的自动化服务器,用于持续集成,具有丰富的插件和友好的用户界面。Jenkins可用于Windows、Mac OS、Linux和其他Unix版本。它提供了简单的安装和更新过程,并且可以通过图形用户界面轻松配置。
主从模式允许Jenkins支持分布式构建和基于表达式定时任务。它不仅提供了关于构建状态的通知,而且支持在构建步骤中执行命令。是目前最主要使用的 CI 工具。
# Bamboo
Bamboo 由 Atlassian 研发。你可能对这个公司比较陌生,但是你一定听过 Jira 和 Trello,这些工具都是有 Atlassian 研发的。
Bamboo 在提供发布、质量指标和端到端可视性方面表现突出。
内置的Git和 Mercurial 使Bamboo能够自动化合并来自两个版本控制系统的分支的过程。Bambor负责分支检测、构建、测试和合并任务,以便仅基于分支名称将代码持续部署到生产环境。
Bamboo 是一个收费应用,一个公司可以付很少的费用获取许可证,就能获得技术支持是很划算的事情。
# CircelCI
CircelCI 是一个基于云的CI解决方案,支持多平台的,适合分布式,有很多定制选项。它支持许多不同的语言,包括 Java、Python、JS、Haskell、Ruby on Rails和Scala,不过他只支持 Github 代码管控。
CircelCI 拥有庞大的用户群,是最常用的DevOps工具之一,每天处理超过一百万个构建。CircleCI的用户非常欣赏其独特的仪表盘,其中包含关于团队工作方式和代码运行方式的统计数据和数据,帮助他们提高生产力并缩短上线时间。
你可以免费使用,一旦有更高的需求就可以花少量钱提供更多的功能。
# GoCD
虽然它的名字表明这一个更像是一个 CD(持续交付)工具,但GoCD实际上是一个开源CI服务器,用于轻松地可视化和构建复杂的工作流。它为构建CD管道提供了直观的界面,并以安全的方式将软件部署到生产环境中。 它可以通过管道进行版本控制。
GoCD支持JSON和YAML格式,使您能够在管理配置时跳过界面。它还支持并行和顺序执行,允许团队领导轻松配置依赖项。GoCD可以实时、从端到端地查看可视化工作流。GoCD有社区和插件系统,能更有弹性的扩展功能。
# Gitlab
GitLab提供持续集成作为其版本控制产品的一部分。它的CI工具是一个web应用程序,带有一个开放API,通过友好的用户界面管理项目,并集成了GitLab的所有功能。通过此API,开发人员可以创建与产品的更深层次的集成。
GitLab CI通过发现开发过程的潜在改进,帮助开发人员将想法转化为产品。开发人员在合并请求中共享每一段新代码,这将触发执行所有验证任务的管道,然后再将更改合并到源代码存储库中。
# Codeship
一个简单灵活的CI工具,旨在通过快速持续集成解决方案帮助小型和成长型团队。
CodeShip几乎可以与任何工具、服务或云集成,让团队领导添加他们需要的功能,比如如部署、通知、代码覆盖、安全扫描、版本控制等。
本文完,感谢你的耐心阅读,如有需要可加我微信,备注「博客」并说明原因,我们一起进步,下次见。