业务云原生架构、推荐系统以及线上生活等热点方向的高可用高性能业务架构有哪些?点击了解 了解详情
写点什么

ThoughtWorks 开源持续交付工具 Go

2014 年 3 月 10 日

近日,ThoughtWorks 开源了名为 Go 的持续交付(CD)工具。它的前身是 CruiseControl ,提供了一个覆盖整个代码开发过程——持续集成、测试和部署——的管道式过程。

尽管 Go 的 GitHub 账户还在等待接收源代码,但开发人员已经可以获取可用于 Windows、Mac OS X、Linux、Solaris 或者是作为一个 Java JAR 包提供的二进制安装文件,既有服务器端,也有代理。

为了了解更多有关Go 的计划,InfoQ 采访了ThoughtWorks Studios 开源项目经理Ken Mugrage。

InfoQ:是什么使 Go 富有吸引力?

从管道概念发展而来的为构建 / 测试 / 部署过程建模的能力。既然 Go 的构建目的是成为一款持续交付工具,所以这是该产品的核心概念。以管道作为最重要的概念,并管理依赖关系,只要“操作正确”,即使是最复杂的工作流程也不难建模。许多其它产品也试图设计上同样的功能,但通常虚有其表,或者是插件使它看起来像管道。

InfoQ:跟我们聊一些 Go 的历史吧。

2007 年,Go 最早是作为一款名为“Cruise”的商业产品创建。创建它的团队很快就意识到,以前的持续集成解决方案的架构,无法支持我们实现网格和构建、测试、部署流程所要采用的方式。这使我们决定创建一个全新的商业产品。后续版本见证了产品在这两个特性上的发展,并具备了支持大型构建场和多个大型团队的能力。我们的 2.0 产品更名为 Go,包含了在整个网格上运行大型验收测试套件的功能,并能够反馈目前哪些测试中断了以哪次检入中断了它们。在当时的商业 CI 工具中,这是我们独有的功能。

InfoQ:为什么开源 Go?

简单地说,我们已经得出结论,这样做是正确的。作为一家企业,ThoughtWorks 致力于推广可靠的技术实践。事实上,我们的三大指导原则(我们称之为支柱)中有这样一条,“推动 IT 改革,追求软件卓越”。我们将开源 Go 产品看作是推广可靠的持续交付实践的一个重要方式。

另外,越来越多的业内人士希望,作为平台或基础设施一部分的任意软件都是开源的。其中有各种原因:期望更高的安全性 & 健壮性、能够捐助、丰富的社区,坦白地讲,还有使用成本。鉴于 Go 是数据中心的重要组成部分,许多人将它看作基础设施。我们的客户使用 Go 协调他们所有应用程序的整个构建和部署周期。

InfoQ:为了实现完全自动化的部署管道,Go 需要集成其它什么工具吗?

这个问题确实有点难以回答。Go 本身不需要任何东西,因此,这样一个清单将由用户的构建 / 测试 / 部署周期决定。

Go 协调众多的移动部件,包括推动软件由代码编写进入用户可以访问的生产环境。Go 监控版本控制系统或者包存储库的变化。当检测到变化,它就会运行构建 / 测试 / 部署周期所需的其它工具,其中包括构建管理器,如 Apache Ant、Apache Maven、Microsoft MSBuild;自动化测试工具,如 Selenium、Twist、Cucumber;基础设施管理工具,如 Chef、Puppet 等,还有许多。Go 可以运行任何可以从命令行运行的东西。

InfoQ:你们会继续开发 Go 的商业版本吗?你们还会继续提供支持吗?

我们会为 Go 提供商业插件和专业支持。插件将由需求决定,但它们会是诸如这样的东西,比如,对于非常大型的部署,能够连接到外部数据库(内部用的最多的是嵌入式数据库)来提升性能。

我有幸已经跟我们现有的大部分客户介绍了新模型,而且我想告诉你,无一例外,他们都很满意。

Go 是一款既可以在本地又可以在云上安装的 CD 工具,而 ThoughtWorks 还提供了另外一种名为 Snap 的持续交付解决方案,这是一款托管的 CD 工具。Go 可以扩展到数百台机器上的自动化 CD 过程;而 Snap 则是一款精简的工具,面向部署“需求更简单的应用程序”,Badrinath Janakiraman 这样说道。他是 Snap 的产品负责人,他还说“这不是说一个更简单的应用程序,而只是说一个更简单的测试 / 部署模型。”

Janakiraman 说,与 Go 相比,Snap 的优势在于“Snap 使‘无服务器的’组织(从源代码到应用程序的所有一切都托管在 SaaS & PaaS 服务上)能够以最小的工作量开始 CD 过程。一旦团队已经习惯设计按需发布的应用程序,随着部署需求越来越复杂,他们可能会选择弃用 Snap。”

Snap 可以用于 Java、Ruby、Python、JavaScript & Node.js 项目的持续集成,支持多种数据库——Sqlite3、PostgreSQL、MySQL、Redis、CouchDB、MongoDB——通过 Capybara、Selenium、PhantomJS 进行测试,并部署到 Heroku 或者 AWS 上。其它构建 / 测试 / 部署配置可根据要求支持。

查看英文原文:**** ThoughtWorks Open Sources Go, a CD Tool

2014 年 3 月 10 日 01:183782
用户头像

发布了 256 篇内容, 共 68.2 次阅读, 收获喜欢 6 次。

关注

评论

发布
暂无评论
发现更多内容

天下武功,唯“拆”不破之MECE原则二| 技术人应知的创新思维模型 (6)

Alan

个体成长 技术人应知的创新思维模型 28天写作

架构师训练营 1 期第 12 周:数据应用(一)- 总结

piercebn

极客大学架构师训练营

架构师训练营第 12 周课后练习

叶纪想

极客大学架构师训练营

第十二周作业

极客大学架构师训练营

week12学习总结

追风

架构师一期

第十一周 作业1

Yangjing

极客大学架构师训练营

架构师训练营第 1 期 week12 总结

张建亮

极客大学架构师训练营

作业-第八周

ray-arch

第十二周作业

Meow

架构师训练营第十二周总结

月殇

极客大学架构师训练营

第十二周学习总结

Meow

如何更简单的使用Polly

八苦-瞿昙

随笔杂谈 aop

架構師訓練營 week12 總結

ilake

第八周作业

晴空万里

架构师训练营第2期

架构师训练营第一期第十二周作业

Leo乐

极客大学架构师训练营

Week8总结

lggl

使用 Docker 部署 canal 服务,实现 MySQL 数据库 binlog 日志解析

AlwaysBeta

Python MySQL 数据库 Docker Binlog

运维数字化

春如夏花

企业架构 DevOps 数字化运维

Week8作业

lggl

Java Parser应用介绍

maijun

架构师训练营 1 期 -- 第十二周作业

曾彪彪

极客大学架构师训练营

[架构师训练营第 1 期] 第12周学习总结

猫切切切切切

极客大学架构师训练营

第八周学习总结

晴空万里

架构师训练营第2期

第十二周总结

fmouse

架构师训练营第十二周作业

Shunyi

极客大学架构师训练营

极客时间架构师培训 1 期 - 第 12 周作业

Kaven

第十一周 作业2

Yangjing

极客大学架构师训练营

组合设计模式实现绘图Pannel

我们新四军不拿群众一针一线

极客时间架构师训练营 1 期 - 第 12 周总结

Kaven

第十二周作业

fmouse

week12作业

追风

架构师一期

ThoughtWorks开源持续交付工具Go-InfoQ