[关闭]
@gaoxiaoyunwei2017 2017-12-08T16:54:24.000000Z 字数 4357 阅读 550

Jenkins 的昨天、今天和明天

毕宏飞


作者简介

WX20171208-163025.png-76.7kB

Kohsuke Kawaguchi

持续交付平台 Jenkins 项目创始人,主要开发者。现任 CloudBees CTO。在加入 CloudBees 之前,曾在 Sun 和 Oracle 工作,参与了很多项目的开发,并发起了 Hudson(Jenkins 前身)项目。

前言

非常高兴来到这里,其实半年前我来过中国,当时我们就策划进行一次这样用户的会议。今天我也非常高兴能跟大家分享一下 Jenkins 发展的历程。

一、生物演化的历史

首先我跟大家介绍地球上生物演化的历史,因为我觉得这跟我们 Jenkins 的发展历史是非常相似。

image.png-5340.3kB

大家可以看到,这是五亿四千万年前,当时地球上发生了非常重要的事件,就是寒武纪的大爆发,非常短的时间内我们看到地球上出现各种基本的生命形式,这是非常令人激动的一段时期。正是由于物种的演化,我们经历了不同的变化,我们生命也变得日益复杂,这就是我们说生命复杂的演化过程。如果我们进一步看一下,生命的演化过程是非常复杂的。

开始我们只有无性繁殖,后面有了有性繁殖。所以我们可以看到,最终通过物种的优胜劣汰,因为你需要跟其他的物种进行竞争,进行优胜劣汰。

image.png-194.4kB

再接下来就到了器官演化的过程,这里我给大家呈现的是眼睛演化的过程。随着物种特征的结合,我们看到这样演变的过程就变得非常迅速,而且更复杂的物种就拥有了更多的特征。

image.png-1358.8kB

二、Jenkins 1 时代

我觉得 Jenkins 其实也是位于寒武纪大爆发的时代,一开始的时候我们使用的是单机的应用,这样的单机应用时代,也是经历了很长的时间,我们现在看到的只是冰山一角。随着进一步的演进以及更新,我相信我们会有更多的功能出现。比如说动态代码加载的机制,URL的可组合性,还有它的管理,基础架构以及工具箱等等。这个我们称之为是 Jenkins 第一阶段,或者是“Jenkins 1”时代。

通过这个生态系统我们开发出来了非常有趣的插件,也可以通过我们的插件来把它更好的应用到用户的日常工作中,使得它的工作变得更加有生产力。这就像是一个大巴扎,在市场中所有的人通过我们的平台取得他们所需要的插件,或者需要的一些功能。在这样的大巴扎找到他们所需要的东西。

image.png-1741kB

随着时代的进化,我们出现了自动化。比如说对于一些人来说,对工艺非常感兴趣,他们就把自动化代入到了生产或者加工之中。

image.png-1682.4kB

在寒武纪的大爆发之后,从寒武纪到现在,这是一个相对稳定的时代。这样的一种稳定性也是伴随着许多新物种的出现,比如说恐龙等等。对于我们来说,生命就是通过这样一系列的飞跃来逐渐的演进和演化的。对于 Jenkins 的产品,我们也是在以相同的方式进行演进。接下来会发生什么?跟我们刚刚说的寒武纪大爆发一样,其实生物也有不同的特性,而且需要进行整合。

三、Jenkins 2 时代

我们看一下接下来不同的整合阶段,有一些已经是产品本来的特征了,所以在 Jenkins 第二阶段,我们看一下哪些更为重要,哪些是让我们产品得到智能提升的方法。

Jenkins2 有很多非常棒的特点,还有一个是意识。我们需要不断的演进,用户需要怎样集成这些插件,我们怎么样才能更为负责的给你们最好的 CI/CD 解决方案。你不用买车之后自己再组装车,自己直接就可以开了。对 Jenkins 来说也是一样的,我们有非常多的一些拼块,我们需要怎么做呢?需要想一想如何拓展 Jenkins ,如何通过拓展不同的模块拓展 Jenkins ,那就是改变我们社区人的思维方式。

还有一个就是在 Jenkins2 里面看到的,不仅仅只是构建软件。那时候我们有一些个人的用户,他们就相当于在集成,他们知道直接想做什么,我们有一些源的代码,但这是往往不够的。因为用户越来越多,我们就需要考虑如何让我们的人更加有效率,我们需要给他们提供更好的像 LitPath 这样的东西。因为我们有非常多的文件,这个文件就像优生的隧道,不要让他们在浩如烟海当中流失。这些放在一起,也是我们 Jenkins2 需要考虑非常重要的因素。

3.1 Pipeline

对于 Jenkins 来说还有一个阶段,如果想飞跃的话,那就做 Pipeline 流水线。我们花了非常多的时间在 Pipeline 上面,它是非常好配置 Jenkins 的方法。 Pipeline 我们要怎么做呢?首先需要一个文件,我们的原文件放在一起,不断的集成进行控制,这样就能够编辑出可配置的文档。这些过程其实是同样的文件。

在 Jenkins 文件当中虽然自动化过程稍显复杂,但配置过程仍然非常好。

image.png-121.9kB

我们有五个甚至十个 freestyle jobs 现在只用一个 Pipeline 就可以了。有 Jenkins 的 freestyle 和 Pipeline ,这样我们就能大显神通了,这也是我们的一个推新之处。同时我们可以从一些简单的过程不断的上升到一些更为复杂的过程都能够随机应变,在使用 Jenkins 当中,我们也花了很多的时间和精力。

使用 Pipeline 我们有很多阶段,大家可以看最开始 Build 的阶段,我们用 Docker 给大家提供更好的构建环境。

image.png-62.4kB

在 Build 阶段有一些图形是需要配置的,就需要进行不同配置的方法。我们看一下 Jenkins 所有的部件都是得到完美的配置,很多的工具在这个阶段都可以得到应用。这些对用户来说都是非常熟悉的使用方法,你能够自己使用,而且非常方便。

image.png-79.7kB

我们可以看一下有一些尝试的团队,比如说一些其他的工程师,相当于我们的 library ,我们如何用它定义什么是 Pipeline ?怎么创造一个高水平的用户体验?这个过程可以使得我们生产更为高效,同时不断的进行创新。其实 Pipeline 是非常简单的,世界当中很多事情都是非常复杂的,所以你需要去区分、筛选。我们能够让你去创造这些新的东西,如一个有条件的协议等等。所以你思考的方式可以比较直接,同时又可以表达出非常丰富的思想。

为什么大家非常在乎这些呢?因为我们要不断的集成、交付以及自动化。

image.png-113.4kB

软件现在越来越重要,在不同的行业,大家都很重视软件。我们看一下原代码的变化,有时候会减少时间,反馈非常迅速,而且反馈对商业、对他们的决策非常关键。我们经常说软件正在蚕食整个世界,我们所有的一切都越来越依赖我们的软件。

image.png-686.6kB

因此以前我们是一个单独个体的手工艺者,但现在我们已经不能适应时代的需要了。工业化和自动化,而且规模更庞大,更为尖端,并且更加具有集中的工业化。不同的团队中的人他们的思维方式是不一样的,他们都会让整个项目得到更好的结果。

我们有一个中间团队,可以说是分享服务的精英团队,有非常多的专家能够给我们提供相关的服务。所以这些人其实能够使整个工程组织的生产力达到三倍以上,我们有这些可规模化的人员,生产力的提升对我们来说就不是一个梦想了。

image.png-100kB

越来越重要的是组织能够用CD或者是最难的一个程序,能够帮助我们达到软件最优的使用效果,这也是 Jenkins 现在主要的用途。

3.2 Blue Ocean

我们目标就是不断的推进,但到现在为止在 Pipeline 和 Jenkins2 之间我们有没有足够的组件能够让我们继续的提升呢?其实还有一个小的组件非常重要,那就是 Blue Ocean ,它的目的就是优化 Pipeline。

image.png-1089kB

Pipeline 能够定义一些非常复杂的构建,由于越来越复杂,我希望大家能够看到 Pipeline 是非常有效的。我们花了非常多的经历实现,比如说在一些地方的 Pipeline ,在不同平行测试当中都会进行使用,能够把它安装起来,我们看一下下面的程序演进和进化的过程。

image.png-48.3kB

image.png-63.3kB

Blue Ocean 是非常好的,可以为我们公司带来什么样的福音?很多时候我们喜欢这样做,但这个项目是非常大的,这是一个开源的社区,每个人都能够贡献自己的力量,所以如果想要进行统筹其实并不简单。 cloud bees 是非常好的公司,他们花了很长时间在构造这个项目,希望这个项目继续的延续下去。因为 Blue Ocean 是非常重要的, Jenkins 系统之外的一个补充系统,我们一起努力合作想要发展 Blue Ocean 。我有一个视频来解释一下,我们有很多使用 Jenkins 的经验,能够给大家提供最基本经验的分享。

视频播放

3.3 Pipeline 和 Blue Ocean 的发展

通过我们的集成, Pipeline 以及 Blue Ocean 界面,我们希望这个特质可以组合在一起,使得我们进入一个新的时代。这里是来自于我们用户对于 Blue Ocean 以及对 Pipeline 的评价,这个对于许多人都是非常大的改变。

image.png-272.1kB

这里我展示的就是Pipeline的任务,在过去几年间都是以30倍的速度在增长,意味着每秒钟 Pipeline 都在不断的增加。

image.png-64kB

这是关于我们 Jenkins 线下的沙龙活动,大家可以看到这些红点代表的JAM线下沙龙活动举办的地点,现在在上海也已经开始举办我们相关的活动。

image.png-697.9kB

这是我们JAM会员增长的曲线,可以看到最近几年间我们会员出现了飞速增长。
image.png-99.5kB

在组织JAM的时候,那时候在旧金山我们对会员进行了分类,其中包括贵宾会员、金牌会员,我们希望可以对软件行业做出更多的贡献。

image.png-187.5kB

image.png-360.8kB

正如我刚刚前面提到的一点,我们正在经历像物种变化演化的过程。刚刚我跟大家提到的只是我们一些演进的过程。 PayPal 他们也使用了我们 Jenkins 系统,同时通过对 Jenkins 的应用,很大程度的改进了他们交易的数量以及交易的速度,我不知道大家对 PayPal 有什么了解,这个相当于中国的支付宝。

这是 PayPal 交易量以及活跃的用户数。

image.png-165.2kB

这是关于 PayPal 相关软件开发的数据,他们是非常大的运作规模。

image.png-93.3kB

随着我们一系列的项目推出,我们把软件做出了相应的提升。一开始我们更新周期是一个月,现在已经缩短到了一天,我们希望未来可以把这样的周期缩短到五分钟。如果说我们可以改进速度的话,这个将会对于企业竞争力带来很大的提升。尤其 PayPal 这样的公司,我相信各位应该都知道,之所以要进行自动化,就是希望可以使得我们软件开发速度以及交付的速度变得越来越快,这个就是我们所做的所有事情的初衷,当然我们也希望给其他的客户带来这样的改变。

总结

最后我想告诉大家的就是,从 Jenkins 的三个特质,集成、 Pipeline 、Blue Ocean,我们希望可以带来更好的客户体验,我们也希望带来 Jenkins 新的时代。作为 Jenkins 的用户,希望可以更好的使用 Jenkins 系统,希望通过我今天的演讲分享,可以让你们未来更好的使用我们的 Jenkins 。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注