Jenkins高级篇之Pipeline语法篇-1-Pipeline基本介绍

释放双眼,带上耳机,听听看~!

这篇是Pipeline学习的Hello World篇,任何新知识开始学习都比较困难。耐心一点,坚持多看一些官网文档。概念积累多了,我们才能运用和尝试一些具体的实战练习。这篇主要介绍,Pipeline的基本概念,包括,什么是Pipeline, Pipeline脚本类型划分,为什么要选择Pipeline,以及Pipeline一些大的概念,细节的知识,我们后续文章会慢慢学习。

 

1. 官网文章

我会参考官网文章进行翻译和补充,官网是权威文档,请以官网为准。

https://jenkins.io/doc/book/pipeline/

 

2. 什么是Pipeline

        Jenkins Pipeline是一组插件,支持在Jenkins上实现和集成持续交付的管道。Pipeline这个单词是水管的意思。我以后可能会翻译成管道或者流水线,我建议大家不要翻译,就写Pipeline。这里持续集成(CI)和持续交付(CD),我们在DevOps基础扫盲篇介绍过,以后多经常用到这两个单词缩写。

        Jenkins为了更好支持CI和CD,通过Groovy语言这么DSL(动态描述语言)来开发Pipeline组件。在Jenkins中有一句话,Pipeline as code,Pipeline是Jenkins中最优雅的存在。之前Jenkins上UI操作动作,都可以在Pipeline中代码实现,主要你对Jenkins和Groovy语言有足够多掌握。

        以后我们经常说CI Pipeline和CD Pipeline,你现在大致可以理解为,要实现CD,先要实现CI。CD Pipeline就是一个代码文件,里面把你项目业务场景都通过Groovy代码和Pipeline语法实现,一个一个业务串联起来,全部实现自动化,从代码仓库到生产环境完成部署的自动化流水线。这个过程就是一个典型的CD Pipeline

       官网建议我们把Pipeline代码放在一个名称为Jenkinsfile的文本文件中,并且把这个文件放在你项目代码的根目录,采用版本管理工具管理。Jenkinsfile我后面会具体例子来介绍。当然,我们也可以把Pipeline代码用一个Hello.groovy这样的文件去保存在代码库,这也是没问题的。

 

3. Pipeline代码分类和两者区别

        一个Jenkinsfile或者一个Pipeline代码文件,我们可以使用两个脚本模式去写代码,这两种分类叫:Declarative Pipeline 和 Scripted Pipeline. 现在来介绍下两者脚本模式的区别,Declarative相对于Scripted有两个优点。第一个是提供更丰富的语法功能,第二个是写出来的脚本可读性和维护性更好。接下里我们学习的Pipeline语法,其中一部分语法只能在Declarative模式下使用,并不支持Scripted模式。虽然,我在后面文章也会用Declarative和Script两个模式去写同一个场景的Pipeline代码,但是,作为一个初学者,我建议选择并采用Declarative的方式去组织Pipeline代码。

 

4. 为什么要选择使用Pipeline

        现在Jenkins是一个非常著名的CI服务器平台,支持很多不同第三方(插件的形式)集成自动化测试。Jenkins UI 配置已经满足不了这么复杂的自动化需求,加入Pipeline功能之后,Jenkins 表现更强大,Pipeline主要有一下特点。

代码:Pipeline是用代码去实现,并且支持check in到代码仓库,这样项目团队人员就可以修改,更新Pipeline脚本代码,支持代码迭代。

耐用:Pipeline支持在Jenkins master(主节点)上计划之内或计划外的重启下也能使用。

可暂停:Pipeline支持可选的停止和恢复或者等待批准之后再跑Pipeline代码。

丰富功能:Pipeline支持复杂和实时的CD需求,包括循环,拉取代码,和并行执行的能力。

可扩展性:Pipeline支持DSL的自定义插件扩展和支持和其他插件的集成。

      上面这段话提到的“主节点”,“批准” 我会后续用具体例子介绍,帮你理解这里说到的好处。这个可扩展性,可能我没法实现,暂时没有研究这么深入。在第节点里面提到的CD Pipeline和本节点提到的Pipeline可以添加到代码仓库管理,通过下面这个CD Pipeline的流程图,我们知道一个CD流程大致包含这些业务场景。

  1. 开发提交代码到项目仓库服务器
  2. 开始执行Pipeline代码文件,开始从仓库check out代码
  3. 启动Pipeline里面第一个stage,stage就是阶段的意思,后面会介绍语法
  4. 图里面第一个Stage应该是代码打包构建(Build)
  5. 然后进入测试的阶段,执行各种自动化测试验证
  6. 然后测试结束,到运维的部署阶段。
  7. 部署结束,输出报告,整个自动化流程工作完成,等待触发构建,开始重复下一轮1到7步骤。

 

5. Pipeline的大的一些概念基础

这里开始介绍一些大的并且很基础的概念,更多、更具体的Pipeline语法,我后续文章来介绍。

pipeline

       这个单词是小写,可以看作是Pipeline语法中的一个关键字。以后一个groovy文件或者一个Jenkinsfile文件中不光只有Pipeline代码,例如还有其他的工具类方法等。通过pipeline { Pipeline代码},这个关键字就是告诉Jenkins接下来{}中的代码就是pipeline代码,和普通的函数或者方法隔离出来。

node

       关键字node就是用来区分,Jenkins环境中不同的节点环境。例如一个Jenkins环境包括master节点,也就是主节点,还包括N多个从节点,这些从节点在添加到主节点的向导页面中有一个参数,好像是label,就是给这个从节点取一个名称。在Pipeline代码中可以通过node这个关键字告诉Jenkins去用哪一台节点机器去执行代码。

stage

       关键字stage,就是一段代码块,一般个stage包含一个业务场景的自动化,例如build是一个stage, test是第二个stage,deploy是第三个stage。通过stage隔离,让Pipeline代码读写非常直观。到后面你还会学习stages这个关键字,一个stages包含多个stage。

step

       关键字step就是一个简单步骤,一般就是几行代码或者调用外部一个模块类的具体功能。这里step是写在stage的大括号里的。

       以上就是Pipeline的基础语法内容,下一篇,介绍Declarative Pipeline 和 Scripted Pipeline在Jenkins环境上的实战练习,并解释没一行代码的含义,顺便复习一下Pipeline的基础语法,也就是pipeline, node, stage, step这几个关键字的使用。

给TA打赏
共{{data.count}}人
人已打赏
安全经验

职场中的那些话那些事

2021-9-24 20:41:29

安全经验

elk+redis 搭建nginx日志分析平台

2021-11-28 16:36:11

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索