Jenkins Pipeline预研
Jenkins Pipeline预研
Jenkins1.x 背景
在Jenkins1.x版本中,持续集成是通过web UI进行交互的,就是说任务的创建、配置以及任务间的关联关系都是通过页面进行管理和维护的。CI构建方面,任务间并没有太多的依赖关系,相对来说比较容易管理。但是在CD方面,引入了测试、发布、部署、环境迁移、运营反馈等等的流程,独立运行的任务之间有了依赖关系,而且不同的任务需要在不同的节点去完成。
如果产品是微服务架构的,服务之间可能需要协同发布,任务之间的关系会更为复杂和繁琐,如果在Jenkins的Dashboard界面进行任务的集中管理和配置很容易出错,比如多人协作修改一个流程任务出现“修改丢失”以及某个服务升级出现问题需要版本的回退等等,都需要人为的去修改Job,这样的话任务管理就会成为服务发布的一个瓶颈。
Jenkins2.x Pipeline
What is Jenkins Pipeline?
Jenkins Pipeline (or simply “Pipeline” with a capital “P”) is a suite of plugins which supports implementing and integrating continuous delivery pipelines into Jenkins.
Jenkins2.X版本开始就引入了Pipeline这个概念。由官方定义可知,pipeline指的是通过Jenkins服务,可以实现CI/CD功能的一系列插件。
Jenkins2.x的精髓是Pipeline as Code,使用简单的声明式语法或者Groovy DSL脚本进行流程描述。
Why Pipeline?
Jenkins is, fundamentally, an automation engine which supports a number of automation patterns. Pipeline adds a powerful set of automation tools onto Jenkins, supporting use cases that span from simple continuous integration to comprehensive CD pipelines. By modeling a series of related tasks, users can take advantage of the many features of Pipeline:
- Code: Pipelines are implemented in code and typically checked into source control, giving teams the ability to edit, review, and iterate upon their delivery pipeline.
- Durable: Pipelines can survive both planned and unplanned restarts of the Jenkins master.
- Pausable: Pipelines can optionally stop and wait for human input or approval before continuing the Pipeline run.
- Versatile: Pipelines support complex real-world CD requirements, including the ability to fork/join, loop, and perform work in parallel.
- Extensible: The Pipeline plugin supports custom extensions to its DSL [1] and multiple options for integration with other plugins.
使用pipeline的好处
第一点:用代码的形式描述任务的配置和任务之间的关系,就是使用代码来控制项目的构建、测试、部署等,非常灵活,而且便于扩展。项目配置的代码放在Gitlab上统一管理,这样项目配置管理就可以像维护代码一样,进行修改、提交、代码review、版本回退等等。
第二点:既然是用代码进行控制,那么整个构建部署流程就可以使用代码进行人为的干预,比如某个阶段出现异常信息的打印,要不要继续下一阶段,某个阶段任务运行情况也可以可视化显示,并进行问题定位以及优化等等。
第三点:就是比如Pipeline是独立于Jenkins主进程的,如果master意外停掉,也不会影响pipeline程序的运行,还有就是用代码控制流程后,可以进行任务间复杂的交互,并行执行等等操作,最后就是支持DSL的扩展,可以根据自己需要进行自定义需要的功能。
个人总结
Pipeline的话,可以翻译成流水线,而流水线在其他行业尤其是制造行业,很多年前就提出了这种概念,比如汽车制造行业,流水线通过分而治之的方式生产零件,最后进行汽车的组装,提高了生产效率,机器的出现推动了自动化流水线的发展,从而大幅度的加快了生产效率。
同理,在软件开发行业,人们也希望加快软件产品的开发生命周期,由于软件产品本身是虚拟的,开发和测试会出现很多问题,需要很多人进行协作,运行部署环境也比较复杂等等因素,导致进展一直很缓慢。
近几年,随着云计算、微服务、容器技术的出现,使得软件行业流水线生产模式的落地成为可能,而Jenkins的话,可以理解成一个流水线车间(引擎),pipeline技术推动了该车间自动化流水线的发展,至于自动化过程中,使用哪些机器,怎么去更好的提高生产效率,现在没有一个标准,所以目前,Jenkins的Pipeline使用方面,还没有一个被大多数人接受的最佳实践。
注:从软件上来讲,Jenkins的插件数量太多,质量也参差不齐,很容易出现安全方面的漏洞,使用的时候,需要注意。
Jenkins Pipeline预研相关推荐
- Jenkins Pipeline 构建复杂的Electron程序
最近一年都在捣腾Electron,从0.X版本,到现在最新Stable的3.X版本.一路上踩的坑很多,Electron的版本号也飞快的.项目设立的初衷是一份代码,即可构建出Windows和Mac,并且 ...
- Jenkins Pipeline 语法
目录 声明性pipeline Sections agent pipeline与stage中的不同 参数 常用选项 发布 post stages steps Directives environment ...
- Jenkins Pipeline 脚本
我常说 2019 年对于我来说是转折性的一年,提前完成了前半辈的很多事情.有些事还是要提前规划,要不然轮到身上的时候会措手不及.这次疫情很多人都会在家,很多人羡慕自由职业者,然并卵,这下应该都能体会到 ...
- 基于熵权法优劣解距离法_维普资讯中文期刊服务平台-基于改进TOPSIS方法的航空装备预研项目技术风险评估...
摘 要:技术风险是引发费用风险和进度风险的主要因素,因此在航空装备的研制中需要重点管控和规避.为提供可靠的航空装备预研项目技术方案的选择依据,采用改进的TOPSIS方法对五种不同航空装备预研方案的技术 ...
- Jenkins Pipeline构建流水线发布
Jenkins Pipeline构建流水线发布 1. Jenkins Pipeline 核心概念 Jenkins Pipeline是一套插件,支持在Jenkins中实现持续集成.交付管道; Pipel ...
- Jenkins Pipeline动态使用Git分支名称的技巧
前言 在上一篇 Jenkins 使用环境变量 中,帮助大家使用一条 Docker 命令就可以快速玩转 Jenkins,同时用最简单的方式解释了 Jenkins 中让人混乱的环境变量,本文还是接着变量说 ...
- Jenkins Pipeline插件十大最佳实践!
Jenkins Pipeline 插件对于 Jenkins 用户来说可以让用户能够改变游戏规则.基于 Groovy 中的领域特定语言(DSL),Pipeline 插件使 Pipelines 可以有脚本 ...
- Android O 前期预研之一:Android Treble 计划
Android O 前期预研 之前一直传言android O的推出会包含有两部分的主要功能: 谷歌打算彻底解决Android版本碎片化的问题,会在Android O上推出一个新的框架设计来解决这个这个 ...
- Android平台监听系统截屏方案预研及相关知识点
最近有个针对系统截屏的需求,所以预研了Android平台上捕获系统截屏的方案. 最直接的方式就是监听手机的系统截屏组合键(电源键+音量下键),但是这种方式实现难度大,且有的机型使用特殊手势进行截屏,兼 ...
最新文章
- 永远不要在代码中使用「User」这个单词!
- KEIL5.11安装小结
- irobot擦地机器人故障_懒人必备神器,电动高频擦地,科沃斯地宝T8 AIVI扫地机器人...
- 前端框架Bootstrap 教程
- JAVA正则忽略大小写
- python类的继承super方法_Python类的继承super相关原理解析
- SQLServer------聚集索引和非聚集索引的区别
- 【LeetCode笔记】22.括号生成(Java、DFS回溯、剪枝、括号)
- python 二维列表从小到大_给Python开发者准备的110道面试题
- Xcode7 无账号真机测试!!
- PAT (Basic Level) Practice (中文)答案合集
- 一个对Winsock完成端口模型封装的类
- java7 32位官方下载_【java7】64位+32位官方下载
- 六十八个经典管理小故事
- C语言数据结构、十字链表的分析及实现
- 使用vlmcsd搭建KMS服务器激活环境
- 灵活的IP网络测试工具——— X-Launch
- LOL云顶弈记牌易语言源码
- 计算机里的硬盘分区,Disk Genius对电脑硬盘分区的详细步骤
- (孔乙己茴香豆的的“茴”字有几种写法)三栏布局两边固定中间自适应