Pipeline语法介绍
简介
Pipeline 是一种用于定义和自动化软件交付过程的工具,它可以通过代码进行持续集成和持续交付。Pipeline 主要有两种模式:Declarative Pipeline 和 Scripted Pipeline。Declarative Pipeline 提供了一种更简单、结构化的方式来定义构建过程,适合大多数用户;而 Scripted Pipeline 则允许更大的灵活性,采用 Groovy 语言编写,适合需要复杂逻辑的场景
Declarative Pipline
demo演示
上面是一个简单的流水线,其中包含两个测试阶段,在我们实际工作中可以根据不同的使用场景,设计不同的阶段,每个stage代表一个测试阶段,Jenkins会按照从上到下的顺序依次执行每个stage,当前两个测试阶段执行完成后,最后执行post内操作,以上示例只是为了让大家先简单感受一下Pipeline的玩法,下面会详细介绍Pipeline的重点语法
语法讲解
- stages
含义:包括一个或者多个stage的序列,Pipeline的大部分工作在此执行,必须出现的指令,每个Pipeline代码区间中必须只有一个stages
- stage
含义:包含在stages中,Pipeline完成的所有实际工作都需要包含在stage中,必须出现的指令,需要定义stage的名字
- step
含义:具体执行步骤,包含stage代码区间中,必须出现的指令
-
agent
含义:定义Pipeline执行节点,是必须出现的指令
参数:
- any:可以在任意节点上执行Pipeline
- none:不配全局agent,每个stage分配自己的agent
- label:指定运行节点的label
- node:自定义运行节点配置
- label:设置运行节点
- customWorkspace:指定工作目录
- docker:控制目标节点上的docker运行相关内容
使用node参数指定执行节点和工作目录:
每个阶段使用不同的节点环境:
-
environment
含义:定义全局变量,不是必须出现的指令
-
post
含义:定义Pipeline或者stage运行结束时的操作
参数
- always:无论Pipeline运行的完成状态如何都会运行
- changed:只有当前Pipeline运行的状态与之前完成的Pipeline的状态不同时,才会运行
- failure:仅当当前Pipeline处于失败状态时才会运行
- success:仅当当前Pipeline处于成功状态时才会运行
- unstable:只有当前Pipeline具有不稳定状态才能运行
- aborded:只有当前Pipeline处于中止状态时才能运行
-
options
含义:定义一些Pipeline的特殊属性,不是必须出现的指令
- buildDiscarder:保留构建的最大个数(页面上可以显示多少次构建)
- disableConcurrentBuilds:不允许并行执行Pipeline任务
- timeout:Pipeline超时时间
- retry:失败后,重试整个Pipeline的次数
- timestamps:预定义由Pipeline生成的所有控制台输出时间
- skipStagesAfterUnstable:一旦构建状态进入了“Unstable”状态,就跳过后续stage
使用示例:
skipStagesAfterUnstable使用示例,此情景会跳过Deploy测试阶段:
-
parameters
含义:
定义Pipeline的触发参数,不是必须出现的指令,支持数据类型:booleanParam(布尔),choice(选择),credentials(证书),file(文件),text(文本),password(密码),run(运行时参数),string(字符串)
定义参数PERSON,触发jenkins工程的时候,需要输入参数的值,才能成功触发工程
-
triggers
含义:
定义了Pipeline自动触发的方式
参数:
- cron:接受一个cron风格的字符串来定义Pipeline触发的常规间隔
- pollSCM:接受一个cron风格的字符串来定义jenkins检查SCM源更改的常规间隔,如果存在新的更改,则Pipeline将被重新触发
cron demo:
日志显示:

pollSCM demo:
日志显示:

-
parallel
含义:
可以让多个stage并行执行
demo:
运行流程:

Scripts Pipeline
demo演示
Scripts Pipeline相比Declarative Pipline更加灵活,支持条件判断、循环语句等,下面主要讲解一下重点语句用法:
-
try catch语句
流水线可以通过try语句捕捉异常,防止异常退出的情况发生
-
条件语句
demo:
-
循环语句
-
for循环
-
while循环
-
each方法循环列表
-
-
执行shell
-
书写方式:
-
参数含义:
script:执行的 Shell 命令或脚本
returnStdout(可选):如果设置为 true,命令的标准输出将被捕获并作为字符串返回,而不是直接打印到 Jenkins 日志中
label(可选):为当前的 Shell 执行步骤提供一个描述性标签
returnStatus:如果设置为 true,则会返回命令的退出状态码,而不是输出
运行日志:

-
-
Declarative Pipline和Scripts Pipeline结合使用
实际工作中,流水线的设计大多会将Declarative和Scripts结合起来使用,这样设计的流水线,在保证结构清晰、简单的情况下,还可以灵活的满足多种场景。结合使用的写法也很简单,主体框架采用Declarative的结构书写方式,在需要Scripts语句的时候,只需要把Scripts语句写在script当中即可,下面是一个简单的demo:
