Jenkins 2.X Script Pipeline语法基础
- 2019 年 11 月 21 日
- 筆記
- Declarative Pipeline
- Script Pipeline
对于很多初学者来讲,可能接触的都是Declarative Pipeline,即声明式pipeline语法,这种类似我们在做自动化测试时所接触的关键字驱动模式,只要理解其定义好的关键词,按要求填充数据即可。
这种方式最大的优势在于易于入门,但灵活性欠缺。
笔者在企业实践中中,采用的是Script pipeline,即脚本式pipeline语法,好处就是灵活,好封装,易于大规模使用,但需要有一定的编程功底。
不过笔者还是推荐大家掌握script pipeline,为什么呢?
基于代码模式可以让你在不同业务、不同行业、不同规模间进行无缝落地。
下面开始介绍一些script pipeline的基础,方便大家后续逐步自学入门和落地实战。
在脚本化流水线语法中, 一个或多个 node
块在整个流水线中执行核心工作。 虽然这不是脚本化流水线语法的强制性要求, 但它限制了你的流水线的在`node`块内的工作做两件事:
- 通过在Jenkins队列中添加一个项来调度块中包含的步骤。 节点上的执行器一空闲, 该步骤就会运行。
- 创建一个工作区(特定为特定流水间建立的目录),其中工作可以在从源代码控制检出的文件上完成。 Caution: 根据你的 Jenkins 配置,在一系列的空闲后,一些工作区可能不会自动清理 。
下面我们看一个标准的script pipe模板实例:

1. 在任何可用的代理上,执行流水线或它的任何阶段
2.定义 "Build" 阶段。 stage
块 在脚本化流水线语法中是可选的。然而, 在脚本化流水线中实现 stage
块 ,可以清楚的显示Jenkins UI中的每个 stage
的任务子集。
3. 执行与 "Build" 阶段相关的步骤。
4. 定义 "Test" 阶段。
5. 执行与 "Test" 阶段相关的步骤。
6. 定义 "Deploy" 阶段。
7. 执行与 "Deploy" 阶段相关的步骤。
下面我们在看一个标准是示例:

3 - stage
是一个描述 stage of this Pipeline的语法块。
5 - sh
是一个执行给定的shell命令的流水线 step
6 - junit
是junit单元测试聚合测试报告的流水线 step
7 - node
是脚本化流水线的一种特定语法,它指示 Jenkins 在任何可用的代理/节点上执行流水线 (和包含在其中的任何阶段)这实际上等效于 声明式流水线特定语法的`agent`。
要注意的是,在实际应用中应该根据业务需要对stage进行合适的重定义,参见上文,笔者实战中对stage的不同定义Jenkins Pipeline script语法自动化测试模板及效果
时间有限,每次写近千字,后续我们在持续分享这个系列