前言

上周日在上海召开了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. 嵌入页面的几种方法(转载自萤火虫小Q)

    一.应用框架技术 ---- 要在宿主页面中嵌入外部页面的方法是,在宿主页面中包含外部页面的位置插入“< IFRAME name="XXX" width=X height=X ...

  2. 关于java中为什么尽量把受检异常转化为非受检异常

    首先理解一下受检异常与非受检异常: 异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机操作中可能遇到的异常,是一种常见的运行错误,只要程序设计的没有问题通常就不会发生.受检异常与程序的上 ...

  3. python基础(五)

    一.os模块 import os# os.rename(old,new)#重命名# os.remove(f)#删除文件 # os.mkdir('china/beijing') #创建文件夹# os.m ...

  4. VB中获取网页数据

    以下是在Microsoft Visual Basic 6.0 中文版下做的 VB可以抓取网页数据,所用的控件是Inet控件. 第一步:单击工程-->部件 选择Microsoft Internet ...

  5. slf4j的使用2

    一.Log4J的配置文件(Configuration File)就是用来设置记录器的级别.存放器和布局的,它可接key=value格式的设置或xml格式的设置信息.通过配置,可以创建出Log4J的运行 ...

  6. frag

    <?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android=&qu ...

  7. javaWeb-Servlet工作原理

    1.客户发出请求—>Web 服务器转发到Web容器Tomcat: 2.Tomcat主线程对转发来用户的请求做出响应创建两个对象:HttpServletRequest和HttpServletRes ...

  8. [经验分享] MySQL Innodb表导致死锁日志情况分析与归纳【转,纯学习】

    在定时脚本运行过程中,发现当备份表格的sql语句与删除该表部分数据的sql语句同时运行时,mysql会检测出死锁,并打印出日志. 两个sql语句如下: (1)insert into backup_ta ...

  9. windows 下的 Apache SSL证书配置

    一.获取证书 1.从腾讯云获取 (1)登录腾讯云后,在“产品”中搜索[ssl]然后会得到 "SSL证书“,进入后点“立即选购” 这样就完成了证书的申请,等待一个工作日的审核. 审核通过后,进 ...

  10. [删括号][判断可行性的dp]

    链接:https://ac.nowcoder.com/acm/problem/21303来源:牛客网题目描述 给你一个合法的括号序列s1,每次你可以删除一个"()" 你可以删除0个 ...