本文整理自首届 Jenkins User Conference China 演讲:Jenkins 创始人 KK《Jenkins: Past, Present & Future》
Kohsuke Kawaguchi 持续交付平台 Jenkins 项目创始人,主要开发者。现任 CloudBees CTO。在加入 CloudBees 以前,曾在 Sun 和 Oracle 工做,参与了不少项目的开发,并发起了 Hudson(Jenkins 前身)项目。
很是高兴来到这里,其实半年前我来过中国,当时咱们就策划进行一次这样的Jenkins用户大会。今天我也很是高兴能跟你们分享一下 Jenkins 发展的历程。html
首先我跟你们介绍地球上生物演化的历史,由于我以为这跟咱们 Jenkins 的发展历史是很是类似。架构
你们能够看到,这是五亿四千万年前,当时地球上发生了很是重要的事件,就是寒武纪的大爆发,很是短的时间内咱们看到地球上出现各类基本的生命形式,这是很是使人激动的一段时期。并发
正是因为物种的演化,咱们经历了不一样的变化,咱们生命也变得日益复杂,这就是咱们说生命复杂的演化过程。ide
若是咱们进一步看一下,生命的演化过程是很是复杂的。工具
开始咱们只有无性繁殖,后面有了有性繁殖。因此咱们能够看到,最终经过物种的优胜劣汰,由于你须要跟其余的物种进行竞争,进行优胜劣汰。测试
再接下来就到了器官演化的过程,这里我给你们呈现的是眼睛演化的过程。随着物种特征的结合,咱们看到这样演变的过程就变得很是迅速,并且更复杂的物种就拥有了更多的特征。优化
我以为 Jenkins 其实也是位于寒武纪大爆发的时代,一开始的时候咱们使用的是单机的应用,这样的单机应用时代,也是经历了很长的时间,咱们如今看到的只是冰山一角。ui
随着进一步的演进以及更新,我相信咱们会有更多的功能出现。好比说动态代码加载的机制,URL 的可组合性,还有它的管理,基础架构以及工具箱等等。这个咱们称之为是 Jenkins 第一阶段,或者是“Jenkins 1”时代。插件
经过这个生态系统咱们开发出来了很是有趣的插件,也能够经过咱们的插件来把它更好的应用到用户的平常工做中,使得它的工做变得更加有生产力。3d
这就像是一个大巴扎,在市场中全部的人经过咱们的平台取得他们所须要的插件,或者须要的一些功能。在这样的大巴扎找到他们所须要的东西。
随着时代的进化,咱们出现了自动化。好比说对于一些人来讲,对工艺很是感兴趣,他们就把自动化代入到了生产或者加工之中。
在寒武纪的大爆发以后,从寒武纪到如今,这是一个相对稳定的时代。这样的一种稳定性也是伴随着许多新物种的出现,好比说恐龙等等。
对于咱们来讲,生命就是经过这样一系列的飞跃来逐渐的演进和演化的。对于 Jenkins 的产品,咱们也是在以相同的方式进行演进。
接下来会发生什么?跟咱们刚刚说的寒武纪大爆发同样,其实生物也有不一样的特性,并且须要进行整合。
咱们看一下接下来不一样的整合阶段,有一些已是产品原本的特征了,因此在 Jenkins 第二阶段,咱们看一下哪些更为重要,哪些是让咱们产品获得智能提高的方法。
Jenkins 2 有不少很是棒的特色,还有一个是意识。咱们须要不断的演进,用户须要怎样集成这些插件,咱们怎么样才能更为负责的给大家最好的 CI/CD 解决方案。你不用买车以后本身再组装车,本身直接就能够开了。
对 Jenkins 来讲也是同样的,咱们有很是多的一些拼块,咱们须要怎么作呢?须要想想如何拓展 Jenkins ,如何经过拓展不一样的模块拓展 Jenkins ,那就是改变咱们社区人的思惟方式。
还有一个就是在 Jenkins 2 里面看到的,不只仅只是构建软件。那时候咱们有一些我的的用户,他们就至关于在集成,他们知道直接想作什么,咱们有一些源的代码,但这是每每不够的。
由于用户愈来愈多,咱们就须要考虑如何让咱们的人更加有效率,咱们须要给他们提供更好的像 LitPath 这样的东西。由于咱们有很是多的文件,这个文件就像优生的隧道,不要让他们在浩如烟海当中流失。这些放在一块儿,也是咱们 Jenkins2 须要考虑很是重要的因素。
对于 Jenkins 来讲还有一个阶段,若是想飞跃的话,那就作 Pipeline 流水线。咱们花了很是多的时间在 Pipeline 上面,它是很是好配置 Jenkins 的方法。
Pipeline 咱们要怎么作呢?首先须要一个文件,咱们的原文件放在一块儿,不断的集成进行控制,这样就可以编辑出可配置的文档。这些过程实际上是一样的文件。
在 Jenkins 文件当中虽然自动化过程稍显复杂,但配置过程仍然很是好。
咱们有五个甚至十个 freestyle jobs 如今只用一个 Pipeline 就能够了。有 Jenkins 的 freestyle 和 Pipeline ,这样咱们就能大显神通了,这也是咱们的一个推新之处。
同时咱们能够从一些简单的过程不断的上升到一些更为复杂的过程都可以随机应变,在使用 Jenkins 当中,咱们也花了不少的时间和精力。
使用 Pipeline 咱们有不少阶段,你们能够看最开始 Build 的阶段,咱们用 Docker 给你们提供更好的构建环境。
在 Build 阶段有一些图形是须要配置的,就须要进行不一样配置的方法。咱们看一下 Jenkins 全部的部件都是获得完美的配置,不少的工具在这个阶段均可以获得应用。这些对用户来讲都是很是熟悉的使用方法,你可以本身使用,并且很是方便。
咱们能够看一下有一些尝试的团队,好比说一些其余的工程师,至关于咱们的 library ,咱们如何用它定义什么是 Pipeline ?怎么创造一个高水平的用户体验?这个过程可使得咱们生产更为高效,同时不断的进行创新。
其实 Pipeline 是很是简单的,世界当中不少事情都是很是复杂的,因此你须要去区分、筛选。咱们可以让你去创造这些新的东西,如一个有条件的协议等等。因此你思考的方式能够比较直接,同时又能够表达出很是丰富的思想。
为何你们很是在意这些呢?由于咱们要不断的集成、交付以及自动化。
软件如今愈来愈重要,在不一样的行业,你们都很重视软件。咱们看一下原代码的变化,有时候会减小时间,反馈很是迅速,并且反馈对商业、对他们的决策很是关键。咱们常常说软件正在蚕食整个世界,咱们全部的一切都愈来愈依赖咱们的软件。
所以之前咱们是一个单独个体的手工艺者,但如今咱们已经不能适应时代的须要了。工业化和自动化,并且规模更庞大,更为尖端,而且更加具备集中的工业化。不一样的团队中的人他们的思惟方式是不同的,他们都会让整个项目获得更好的结果。
咱们有一个中间团队,能够说是分享服务的精英团队,有很是多的专家可以给咱们提供相关的服务。因此这些人其实可以使整个工程组织的生产力达到三倍以上,咱们有这些可规模化的人员,生产力的提高对咱们来讲就不是一个梦想了。
愈来愈重要的是组织可以用 CD 或者是最难的一个程序,可以帮助咱们达到软件最优的使用效果,这也是 Jenkins 如今主要的用途。
咱们目标就是不断的推动,但到如今为止在 Pipeline 和 Jenkins 2 之间咱们有没有足够的组件可以让咱们继续的提高呢?其实还有一个小的组件很是重要,那就是 Blue Ocean ,它的目的就是优化 Pipeline。
Pipeline 可以定义一些很是复杂的构建,因为愈来愈复杂,我但愿你们可以看到 Pipeline 是很是有效的。咱们花了很是多的经历实现,好比说在一些地方的 Pipeline ,在不一样平行测试当中都会进行使用,可以把它安装起来,咱们看一下下面的程序演进和进化的过程。
Blue Ocean 是很是好的,能够为咱们公司带来什么样的福音?不少时候咱们喜欢这样作,但这个项目是很是大的,这是一个开源的社区,每一个人都可以贡献本身的力量,因此若是想要进行统筹其实并不简单。
cloud bees 是很是好的公司,他们花了很长时间在构造这个项目,但愿这个项目继续的延续下去。由于 Blue Ocean 是很是重要的, Jenkins 系统以外的一个补充系统,咱们一块儿努力合做想要发展 Blue Ocean 。
我有一个视频来解释一下,咱们有不少使用 Jenkins 的经验,可以给你们提供最基本经验的分享。
视频播放:
看视频
经过咱们的集成, Pipeline 以及 Blue Ocean 界面,咱们但愿这个特质能够组合在一块儿,使得咱们进入一个新的时代。这里是来自于咱们用户对于 Blue Ocean 以及对 Pipeline 的评价,这个对于许多人都是很是大的改变。
这里我展现的就是 Pipeline 的任务,在过去几年间都是以30倍的速度在增加,意味着每秒钟 Pipeline 都在不断的增长。
这是关于咱们 Jenkins 线下的沙龙活动,你们能够看到这些红点表明的 JAM 线下沙龙活动举办的地点,如今在上海也已经开始举办咱们相关的活动。
这是咱们 JAM 会员增加的曲线,能够看到最近几年间咱们会员出现了飞速增加。
在组织 JAM 的时候,那时候在旧金山咱们对会员进行了分类,其中包括贵宾会员、金牌会员,咱们但愿能够对软件行业作出更多的贡献。
正如我刚刚前面提到的一点,咱们正在经历像物种变化演化的过程。刚刚我跟你们提到的只是咱们一些演进的过程。
PayPal 他们也使用了咱们 Jenkins 系统,同时经过对 Jenkins 的应用,很大程度的改进了他们交易的数量以及交易的速度,我不知道你们对 PayPal 有什么了解,这个至关于中国的支付宝。
这是 PayPal 交易量以及活跃的用户数。
这是关于 PayPal 相关软件开发的数据,他们是很是大的运做规模。
2013年的时候,他们有四万个 jobs 使用了咱们的 Jenkins ;
2014年他们开始加入了 openstack 这样的私有云中,有2500多个 Jenkins 查检;
2015年的时候,咱们看到他们采用了咱们轻量级的 Jenkins ,以及一些按需的代理;
2016年他们就合做开发了实时的界面;
2017年咱们将开发出来 Bule Ocean 的界面以及咱们的 Pipeline 。
随着咱们一系列的项目推出,咱们把软件作出了相应的提高。一开始咱们更新周期是一个月,如今已经缩短到了一天,咱们但愿将来能够把这样的周期缩短到五分钟。
若是说咱们能够改进速度的话,这个将会对于企业竞争力带来很大的提高。尤为 PayPal 这样的公司,我相信各位应该都知道,之因此要进行自动化,就是但愿可使得咱们软件开发速度以及交付的速度变得愈来愈快,这个就是咱们所作的全部事情的初衷,固然咱们也但愿给其余的客户带来这样的改变。
最后我想告诉你们的就是,从 Jenkins 的三个特质,集成、 Pipeline 、Blue Ocean,咱们但愿能够带来更好的客户体验,咱们也但愿带来 Jenkins 新的时代。做为 Jenkins 的用户,但愿能够更好的使用 Jenkins 系统,但愿经过我今天的演讲分享,可让大家将来更好的使用咱们的 Jenkins 。