一.背景
2015年9月底,提出Jenkins2.0草案。
2016年4月20日,Jenkins2.0正式发布,是Jenkins面世11年以来的首次大版本升级。
Jenkins2.0主要有三大亮点:
1.Pipeline as Code
2.易用性
3.向下兼容
其中,对于CI/CD过程带来最大提升的,就是Pipeline as Code,这Jenkins2.0最适合持续交付的核心特性。

那么什么是Pipeline呢?
简单来说,pipeline就是一套运行于Jenkins上的工作流框架,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂发布流程。
它的实现方式是一套Groovy DSL(类似Gradle),任何发布流程都可以表述为一段Groovy脚本,然后Jenkins可以直接从代码库读取脚本,从而实现Pipeline as Code的理念。
与以往通过web交互来配置的流程不同,jenkins也走向了正规的工程化交付方式-即使用配置文件实现everything is code,至此就再也不用每个项目都手工配置各种项目模板。
同时,pipeline定义了几乎要用到的所有流程,比如静态代码检查,构建,部署,测试等。
二.jenkins1.0的痛点
1.传统的jenkins job难以灵活高效的并行(Job间、节点间、任务间、甚至任务内四个维度的并行)
2.传统的jenkins job太多,CI脚本太离散,维护成本太高,而且jenkins服务一旦挂了,很可能直接造成数据和资产的丢失。
3.传统的jenkins job对CI/CD流程的展示不直观。
三.pipeline的优势
1.持久性:Jenkins Master按计划和非计划重启后,pipeline的job仍能继续工作,不受影响。
2.可扩展性:通过groovy脚本编程,更容易扩展插件,并且设计pipeline=设计代码,更优雅。
3.可暂停性:基于groovy的input命令可实现job的暂停,等待用户输入或确认后才继续执行。
4.便于集中管理:jenkinsfile放版本库,公共类库通过不同的分支来支持多个版本,从而实现后台逻辑对用户透明,也大大减轻插件管理和版本管理的成本。
5.可追溯,可继承:流水线可作为代码资产,纳入源码库(git)统一规范化管理,做到可编辑、可追溯,可继承。
6.更直观:jenkins2.0提供的Blue Ocean视图可在一张图中查看整条流水线,各个阶段的执行结果,包括日志,耗时等。

7.提升资源利用率:jenkins2.0一条流水线相当于4-7个1.0的作业,可大大减轻jenkins服务器的调度压力,提升系统响应速度和资源利用率。
8.交互功能更强大:可与Nexus、Jira、Confluence、Docker、Kubernetes等工具实现丰富多样的交互。
网友评论