CI工具选型指南工具选型指南
持续集成(Continuous integration,CI)是一种每天数次将所有开发人员的工作副本合并到一条共享主线上的实践。听起来,
持续集成也没有做很多事情,只是集成并自动化了一系列任务,以便所有开发人员的工作都可以每时每刻地进行合并。但其实
持续集成中有很多门道,而且工具选型也有很多值得思考的地方。
谈到 CI,就不得不说 Jenkins!
为了帮助 DevOps 新手加深认识,我们先来快速回顾一下 Jenkins 的历史:
Jenkins 起源于 Hudson 项目。Hudson 始于 2004 年夏天,由 Sun Microsystems 公司创建,于 2005 年 2 月在 java.net 中首
次发布。
在 2007 年前后,Hudson 成为了 Cruise Control 和其他开源构建服务器的更好替代品。在 2008 年 5 月的 JavaOne 会议上,
该软件获得了“开发人员解决方案”类别的“ Duke’s Choice Award。
2010 年 11 月,Oracle 收购了 Sun Microsystems 之后,Hudson 社区出现了一个有关其使用基础设施的问题,这个问题逐渐
扩展到对 Oracle 管理和控制的质疑。主要项目贡献者和 Oracle 进行了谈判,尽管在很多方面达成了一致,但关键的症结在于
商标名称“ Hudson”,这是 Oracle 声称在 2010 年 12 月就拥有该名称的权利并申请了商标。因此,在 2011 年 1 月,项目在投
票之后将名称从“Hudson”更改为“Jenkins”。
Jenkins 历史悠久,同时还有庞大的用户群,大家可能就有疑问了,使用 Jenkins 不就行了,为什么还要去找其它的 CI 工具
呢?难道是 Jenkins 出现什么问题了吗?… 事实上,这个问题很难回答,但我认为 Jenkins 没有任何问题,甚至可以说任何
CI 工具都没有错。
CI 只是用于执行一些自动化任务的工具,可以与源代码管理工具集成在一起,可以根据某些条件自动触发作业,并执行一些
可配置的命令。Jenkins 就是这样做的,并且已经完美地做了 15 年了。
然而,这可能正是问题所在:
在 Hudson 以及 Jenkins 时代的初期,许多东西尚未被发明,或者至少没有被广泛使用。比如,VM、公有云、容器、
Kubernetes 等。因此,为了处理我们现在使用的新功能,一个多年前设计的工具,如今必须依赖一些附加的组件和插件。