前言

上周日在上海召开了Jenkins中国用户大会(Jenkins User Confluence China),这应该是Jenkins在中国第一次举办吧。Jenkins的创始人Kohsuke Kawaguchi(大家喜欢叫他KK)也到场演讲,作为Jenkins(包括其前身Hudson)10年多的老用户,怀着技术朝圣的心情,笔者专门从杭州赶过去参加,应该说是收获满满,不仅了解到Jenkins第一线的发展信息,结识了不少各个职业的Jenkins爱好者,而且还有幸和仰慕已久的KK拍了合照,不枉两城之间起早摸黑的一趟奔波,怀着激动的心情,简单和大家汇报下一些收获和见闻。

演讲概要

Kohsuke Kawaguchi开场宣讲
KK作为重磅嘉宾首先带来Jenkins最新动态的演讲,再次宣告了Jenkins从持续集成到持续交付的革命性转变,Jenkins经历多年的发展已经积累了1350个插件,形成了非常完善的生态系统,其中Pipeline Job数在推出的短短时间里,在社区经历了30倍的增长达到62.5W个,迅速成为jenkins job的主流。印象最深的是KK提到的“Pipeline+BlueOcean=Future”,旧有基于配置的Jenkins job已经成为古董,“Pipeline as Code”才是正确的打开之道。
所以还在用配置方式job的同学,抛弃臃肿的配置任务开始学习Pipeline吧,这是未来也是现在进行时。

中国IT企业DevOps持续交付流水线现状调查报告

Devops时代社区发布了中国IT企业DevOps持续交付流水线现状调查报告,几个数据印象比较深刻。

  • 调查者中65%以上用户实现了一周一次以上的部署

    • 在微服务的时代快速发布将成为常态。
  • 64%的受访者已经引入持续交付流水线,其中86%都在使用Jenkins。
    • 看来Jenkins基本都已经成为交付流水线的代名词了,这就是开源的力量。
  • 各阶段工具与流水线集成比例低于25%,流水线自动化出发比例只有31%。
    • 可见虽然不少公司都已经开始交付流水线了,但各个阶段的集成还是比较缺乏实践,很多可能就是用来作为一个部署工具吧。

Jenkins在微软的应用
来自微软的两位工程师介绍了Jenkins在微软Azure云平台的应用,内容比较简短,没什么特别的东西,可能就是来打打他们云平台的广告,想不到Jenkins在微软这样的大厂的也得到了广泛的应用。

在K8S中运行Jenkins服务
Pinteres的工程效能主管介绍了他们公司利用K8S搭建高可用Jenkins集群服务的实践,Jenkins Pipeline虽然功能非常强大,但当大规模应用时也存在自身固存的不少弱点,比如当脚本越来越复杂时性能的消耗会非常严重,后面有好几场的演讲都对这个问题提出了诟病,即使使用Master+Slave方式,随着集群规模的增大,网络维持的消耗都非常巨大,而使用K8S容器管理系统对Jenkins集群进行管理是个不错的方案,这个也正是目前我们正在摸索的方案。
Jenkins在Pinteres的Builds每天超过了4W次,高峰期会严重影响开发和部署效率,可见“频繁做让你痛苦的事情”虽然很美好,但对于Jenkins来说会是个严峻的挑战。K8S+Docker自带高可用以及用完即毁的特性会是个不错的解决方案。

Pipelines At Scale
这又是一个关于Pipeline大规模应用场景的话题,演讲者是Jenkins作者之一Sam Van Oort,主要介绍了Pipeline目前在大规模使用过程中的性能消耗问题,以及编写Pipeline脚本的最佳实践,比如尽量使用shared libraries抽象出公共代码;不要写太长的Pipeline脚本(超过1000行);脚本里不要过于依赖环境参数等。
同时也带来了一些Pipeline新功能的预告,其中比较特别的是带来一个“Speed Options”的参数,提供"Fastest、Fast、Slower、Slowest but safest"几个选项供使用者选择,利用内存机制提高运行速度,目前还在内部测试阶段。
另外,Sam还介绍了一些pipeline 脚本的编写技巧,怎么降低对内存的损耗,以及大量的性能图表数据进行对比,这里不得不佩服老外的严谨态度。
其他
后面还有几场,重点还是围绕jenkins的高可用和性能优化展开,比如插件的选择和瘦身等等,可见随着Jenkins的大规模应用,如何保证系统的高可用性确实是大家现在比较关心的话题。
诺基亚的一位同学介绍了他们利用AI技术对Jenkins Log进行数据分析量化项目指标的经验,据说存储了10年的Jenkins Log数据给各部门KPI考核用,汗。
华为的同学介绍了他们利用Jenkins进行扩展开发自己的devops平台的技术,这个也是我们正在做的事情,还有几个分会场没有时间去听就不提了。

小结

整个大会听下来,大家对Jenkins Pipeline技术都抱着非常高的期望,它和BlueOcean视图插件(虽然我觉得这东西问题还不少)一样会成为Jenkins的未来,同时大规模应用后Jenkins的高可用改进也成为大会的焦点。
最后再提下,Kohsuke Kawaguchi长的太高了,目测至少2米以上,合影很有压力,完全看不出是个日裔。不过态度非常热情的,耐心和所有人合影,不少人也是冲着他参加的这场大会,谁说搞技术的人不追星呢 ?

[持续交付实践] Jenkins 中国用户大会参会见闻的更多相关文章

  1. [持续交付实践] Jenkins Pipeline 高可用设计方法

    前言 这篇写好一段时间了,一直也没发布上来,今天稍微整理下了交下作业,部分内容偷懒引用了一些别人的内容.使用Jenkins做持续集成/持续交付,当业务达到一定规模的时候,Jenkins本身就很容易成为 ...

  2. [置顶] Docker学习总结(7)——云端基于Docker的微服务与持续交付实践

    本文根据[2016 全球运维大会•深圳站]现场演讲嘉宾分享内容整理而成 讲师简介 易立 毕业于北京大学,获得学士学位和硕士学位:目前负责阿里云容器技术相关的产品的研发工作. 加入阿里之前,曾在IBM中 ...

  3. Docker学习总结(14)——从代码到上线, 云端Docker化持续交付实践

    2016云栖大会·北京峰会于8月9号在国家会议中心拉开帷幕,在云栖社区开发者技术专场中,来自阿里云技术专家罗晶(瑶靖)为在场的听众带来<从代码到上线,云端Docker化持续交付实践>精彩分 ...

  4. 云端基于Docker的微服务与持续交付实践

    云端基于Docker的微服务与持续交付实践笔记,是基于易立老师在阿里巴巴首届在线技术峰会上<云端基于Docker的微服务与持续交付实践>总结而出的. 本次主要讲了什么? Docker Sw ...

  5. 联想企业网盘:SaaS服务集群化持续交付实践

    1      前言 当代信息技术飞速发展,软件和系统的代码规模都变得越来越大,而且组件众多,依赖繁复,每次新版本的发布都仿佛是乘坐一次无座的绿皮车长途夜行,疲惫不堪.软件交付是一个复杂的工程,涉及到软 ...

  6. [持续交付实践] 开篇:持续集成&持续交付综述

    前言 随着微服务架构与容器虚拟化技术的发展,持续集成与持续交付的概念又重新回到了大家的视野,越来越多的公司开始使用持续集成的系统来解决频繁发布带来的质量问题:使用持续交付的工具来实现代码在不同环境上的 ...

  7. [持续交付实践] pipeline使用:Multibranch Pipeline

    前言 在探讨multiBranch Pipeline之前,很有必要先探讨下如何制定有效的代码分支管理规范,使用高效的版本控制系统,并对构建产物及其依赖进行管理.我们首先要强调,需要进行版本控制的不仅是 ...

  8. [持续交付实践] 研发协作平台:DevOps背景下的组织结构

    前言 今年以来做的事情越来越杂,负责的技术方向越来越广,精力越来越分散(创业公司的典型特点),编码的时间越来越少,有时候也会觉得很疲惫没办法专注一个事情. 除了技术方向上的实践,组织上如何组建一个最优 ...

  9. [持续交付实践] pipeline使用:项目样例

    项目说明 本文将以一个微服务项目的具体pipeline样例进行脚本编写说明.一条完整的pipeline交付流水线通常会包括代码获取.单元测试.静态检查.打包部署.接口层测试.UI层测试.性能专项测试( ...

随机推荐

  1. string 迭代器

    #include <iostream>#include <string>#include<algorithm>#define m 10000000using nam ...

  2. Matlab 将RGB 图像转换成YCrCb图像

    >> im = imread('trees.jpg');>> imshow(im)>> ycrcb_trees = rgb2ycbcr(im);>> f ...

  3. Linux与Windows的几点区别

    echo $PATH 回显Linux环境变量PATH的值,Linux下的环境变量必须大写echo %path% 回显Windows环境变量path的值 export PATH=/usr/local/t ...

  4. 巧用MYSQL中SQL语句

    static bool Verify(string username, string password) { //string strSql = "select * from users w ...

  5. P2820 局域网

    GOOD NIGHT 诸位,这是最小生成树的模板(掌声) 最小生成树 以下是题目链接:FOR——MIKU 代码如下 /* 并查集可以解决最小生成树的问题 因为并查集可以完成高效的合并 但是,以下代码依 ...

  6. 关于使用git上传远程仓库的两种情况(新项目与老项目)

    具体的git配置与github仓库ssh配置在这里就不再赘述,本次只讲自己之前遇到的两个内容 1.还没有项目,将远程仓库clone下来直接在里边写项目. 2.已有项目,将已有的项目直接添加到建立好的远 ...

  7. java 注解 知识整理

    一.前言 注解(也称为元数据)为我们在代码中添加信息提供了一种方法,它在 一定程度上将元数据与源代码文件结合在一起.它是从java 5 开始引入的.通过使用注解,我们可以将元数据保存在Java源代码之 ...

  8. python------mysql API

    参考引用博客:http://www.cnblogs.com/wupeiqi/articles/5713330.html ifconfig是linux中用于显示或配置网络设备(网络接口卡)的命令,英文全 ...

  9. frost_vex_01

    int inc = 0; //整数inc等于0 while(inc < 6){ //inc在小于6的范围内递增 if(rand(@ptnum + inc + ch("seed" ...

  10. Java多线程学习(总结很详细!!!)

    https://www.cnblogs.com/yjd_hycf_space/p/7526608.html