[持续交付实践] Jenkins 中国用户大会参会见闻
前言
上周日在上海召开了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 中国用户大会参会见闻的更多相关文章
- [持续交付实践] Jenkins Pipeline 高可用设计方法
前言 这篇写好一段时间了,一直也没发布上来,今天稍微整理下了交下作业,部分内容偷懒引用了一些别人的内容.使用Jenkins做持续集成/持续交付,当业务达到一定规模的时候,Jenkins本身就很容易成为 ...
- [置顶]
Docker学习总结(7)——云端基于Docker的微服务与持续交付实践
本文根据[2016 全球运维大会•深圳站]现场演讲嘉宾分享内容整理而成 讲师简介 易立 毕业于北京大学,获得学士学位和硕士学位:目前负责阿里云容器技术相关的产品的研发工作. 加入阿里之前,曾在IBM中 ...
- Docker学习总结(14)——从代码到上线, 云端Docker化持续交付实践
2016云栖大会·北京峰会于8月9号在国家会议中心拉开帷幕,在云栖社区开发者技术专场中,来自阿里云技术专家罗晶(瑶靖)为在场的听众带来<从代码到上线,云端Docker化持续交付实践>精彩分 ...
- 云端基于Docker的微服务与持续交付实践
云端基于Docker的微服务与持续交付实践笔记,是基于易立老师在阿里巴巴首届在线技术峰会上<云端基于Docker的微服务与持续交付实践>总结而出的. 本次主要讲了什么? Docker Sw ...
- 联想企业网盘:SaaS服务集群化持续交付实践
1 前言 当代信息技术飞速发展,软件和系统的代码规模都变得越来越大,而且组件众多,依赖繁复,每次新版本的发布都仿佛是乘坐一次无座的绿皮车长途夜行,疲惫不堪.软件交付是一个复杂的工程,涉及到软 ...
- [持续交付实践] 开篇:持续集成&持续交付综述
前言 随着微服务架构与容器虚拟化技术的发展,持续集成与持续交付的概念又重新回到了大家的视野,越来越多的公司开始使用持续集成的系统来解决频繁发布带来的质量问题:使用持续交付的工具来实现代码在不同环境上的 ...
- [持续交付实践] pipeline使用:Multibranch Pipeline
前言 在探讨multiBranch Pipeline之前,很有必要先探讨下如何制定有效的代码分支管理规范,使用高效的版本控制系统,并对构建产物及其依赖进行管理.我们首先要强调,需要进行版本控制的不仅是 ...
- [持续交付实践] 研发协作平台:DevOps背景下的组织结构
前言 今年以来做的事情越来越杂,负责的技术方向越来越广,精力越来越分散(创业公司的典型特点),编码的时间越来越少,有时候也会觉得很疲惫没办法专注一个事情. 除了技术方向上的实践,组织上如何组建一个最优 ...
- [持续交付实践] pipeline使用:项目样例
项目说明 本文将以一个微服务项目的具体pipeline样例进行脚本编写说明.一条完整的pipeline交付流水线通常会包括代码获取.单元测试.静态检查.打包部署.接口层测试.UI层测试.性能专项测试( ...
随机推荐
- npm,bower安装失败
安装一些软件时,总是会出现一些莫名其妙的问题.我在安装node.js时,默认安装到C:\Program Files\nodejs之后,安装bower时,bower_components默认装到C:\W ...
- ACM山东工商 数据结构与算法 第3章 双向栈的操作
#include <stdio.h>#include <stdlib.h> #define SIZE 20//1左 偶 typedef struct hold{ int s ...
- 删除排序数组中的重复项-leetcode-26
public: int removeDuplicates(vector<int>& nums) { int size=nums.size(); i ...
- [随笔][Java][总结][java 类型系统]
java 的类型系统大体分为两类,对象和基本类型.java使用静态类型检查来保证类型安全.每个变量在使用之前需要声明.非静态类型的语言不要求变量在使用之前进行声明. 基本数据类型 java的基本类型不 ...
- HQL详解
HQL查询:Criteria查询对查询条件进行了面向对象封装,符合编程人员的思维方式,不过HQL(Hibernate Query Lanaguage)查询提供了更加丰富的和灵活的查询特性,因此 Hib ...
- 数据库if判断语句
THEN '青年' ELSE '未成年' END) as age_text from user 更多写法参考:http://www.cnblogs.com/martinzhang/p/3220595. ...
- Windows 10 RS4 无法完全关闭Hyper-V导致Virtual Box 虚拟机无法启动
https://www.jianshu.com/p/2e3429d45aea 起因 因为需要使用Virtual Box做一些工作,卸载了Windows Docker.按照经验,关闭了Hyper-V. ...
- vue插件大全汇总
Vue是一个构建数据驱动的 web 界面的渐进式框架.Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件特别整理了常用的vue插件,来了个大汇总,方便查找使用,便于工作 ...
- global的使用
对于一个全局变量,你的函数里如果只使用到了它的值,而没有对其赋值(指a = XXX这种写法)的话,就不需要声明global. 相反,如果你对其赋了值的话,那么你就需要声明global.声明global ...
- (引用)!Unicode,GBK以及UTF8的联系和区别
在实现单片机显示汉字的操作时,了解到有关汉字编码的相关概念. Unicode是一种字符集,该字符集可以涵盖世界上所有的语言.最常见的字符集是ASC II-0~127(0x00~0x7f).Unicod ...