持续集成是自动完成的,保证每个时间点提交上去的代码可以成功集成,可以使团队更好地应对需求不明确,或者频繁变更的情况。
常用的持续集成工具包括以下几种:
一、Jenkins
Jenkins是一个开源的持续集成工具,可以实现软件的自动化编译、测试和部署。Jenkins以其易用强大的任务调度功能、丰富的插件库在持续集成工具领域占领了大片江山。

自Jenkins V2.0以后,Jenkins引入了pipeline概念,实现了工作流即代码(Pipeline-as-code),持续集成的工作流通过文本文件Jenkinsfile实现了像代码一样的版本管理,可以将持续集成工作流文件Jenkinsfile作为应用软件源代码的一部分,纳入版本库中进行版本管理和代码评审。
Jenkins的特点:
(1) 用于监控持续重复的工作。
(2) 可以做到持续的软件版本发布、测试;监控外部调用执行的工作。
(3) 可以实时地监控集成中存在的错误。
(4) 提供详细的日志文件和提醒功能。
(5) 可以用图表的形式形象的展示项目构建的趋势和稳定性。
Jenkins完成的工作:
(1) 流水线列表:显示每个流水线的总体状态。
(2) 构建项目:自动化打包,避免本地配置出错而导致打包失败等异常情况。
(3) 跑测试用例检测bug:自动化测试,例如:只要代码发生改动,就运行回归测试的所有用例。
(4) 静态代码检测:检测基本的代码问题,比如潜在的内存泄漏等。
(5) 部署:随时部署,可以设定在打包完成之后的操作。
(6) GUI:支持在GUI上对命令的参数进行修改,并在改写后运行。
二、TeamCity
TeamCity是一款成熟的CI服务器,来自JetBrains公司。它包括服务器端和客户端,目前支持Java,.Net项目开发。TeamCity提供一系列特性可以让团队快速实现持续继承:IDE工具集成、各种消息通知、各种报表、项目的管理、分布式的编译等等,可以让工作团队快速享有持续继承带来的效率提升、高质量的软件保障。
三、BambooBamboo是澳大利亚公司Atlassian旗下的一款持续集成、持续部署、持续交付的工具。它很好的与Atlassian旗下的Bitbucket、Jira工具进行集成,构建一套需求、开发、集成、交付的DevOps技术架构平台。Bamboo支持多步骤的构建任务安排,聚集自动化测试,可以使用并行的自动化任务来提升团队的敏捷开发能力,帮助团队更快更便捷地发现错误。Bamboo有很多预构建的功能,而这些功能在Jenkins里得自己手动搭建。这也正是Bamboo的插件更少的原因。Bamboo可以节省很多配置的时间。它的UI也更为直观,有提示,自动补全和其他有用的特性。
Bamboo的特点:
(1) 简单的用户界面,容易安装。
(2) 自动检测你的设置,如果server上使用了mave,ant或者是java,Bamboo会自动检测他们。
(3) 连续的日志,检测build的coloue coded日志,容易显示所有项目。
四、CircleCI
CircelCI 是一个基于云的 CI 解决方案,支持多平台的,适合分布式,有很多定制选项。它支持许多不同的语言,包括 Java、Python、JS、Haskell、Ruby on Rails 和 Scala,不过他只支持 GitHub 代码管控。
CircelCI 拥有庞大的用户群,是最常用的 DevOps 工具之一,每天处理超过一百万个构建。
CircleCI 的用户非常欣赏其独特的仪表盘,其中包含关于团队工作方式和代码运行方式的统计数据和数据,帮助他们提高生产力并缩短上线时间。
你可以免费使用,一旦有更高的需求就可以花少量钱提供更多的功能。
五、GOCD
虽然从名字来看这一个更像是一个 CD(持续交付)工具,但 GoCD 实际上是一个开源 CI 服务器,用于轻松地可视化和构建复杂的工作流。它为构建 CD 管道提供了直观的界面,并以安全的方式将软件部署到生产环境中。
它可以通过管道进行版本控制。还支持 JSON 和 YAML 格式,使您能够在管理配置时跳过界面。它还支持并行和顺序执行,允许团队领导轻松配置依赖项。
GoCD 可以实时、从端到端地查看可视化工作流。GoCD 有社区和插件系统,能更有弹性的扩展功能。
六、Codeship
Codeship是一个简单灵活的 CI 工具,旨在通过快速持续集成解决方案帮助小型和成长型团队。CodeShip 几乎可以与任何工具、服务或云集成,让团队领导添加他们需要的功能,比如如部署、通知、代码覆盖、安全扫描、版本控制等。