开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第20天,点击查看活动详情
Jenkinsfile 能使用两种语法进行编写 - 声明式流水线和脚本化流水线。两种流水线从根本上是不同的。我们今天来具体看看区别细节!
声明式流水线特点
声明式Pipleine是官方推荐的语法,声明式语法更加简洁
所有的声明式Pipeline都必须包含一个pipeline块中
pipeline {
//run
}
在声明式Pipeline中的基本语句和表达式遵循Groovy的语法
但是有以下例外:
- 流水线顶层必须是一个块,特别是
pipeline{} - 按照行分割的,不需要分号作为分割符
- 语句块只能由阶段、指令、步骤、赋值语句组成(例如:
input被视为input())
两种方式的主要区别
Jenkins是使用Java实现的,在很早的时候就引入了
groovy作为DSL。管理员可以使用groovy来实现一些自动化和高级的管理功能。由于groovy引擎已经集成到Jenkins,所以在pipeline一开始很自然就使用groovy来编写Jenkinsfile。
但是groovy毕竟是一种语言,对于没有太多编程经验的同学来说(例如我)学习成本有些高,这个时候声明式pipeline就出现了
主要区别有几点:
- 声明式pipeline,官方鼓励声明式编程模型,比较适合没有编程经验的初学者
- 脚本式pipeline,是基于groovy的DSL语言实现的,为Jenkins用户提供了大量的灵活性性和可扩展性
- 脚本式pipeline
只支持stage(像stages 、steps更细致的阶段划分则不支持) - 需要在脚本中写复杂逻辑的时候更为实用。通过
脚本式pipeline可以方便的编写脚本(例如需要加入循环的逻辑)
写在最后
重新开始更文啦!最近因为工作原因,一直在学习devops的内容,感谢大家的支持!我会继续努力坚持学习!养成了好习惯,每天必定会抽出时间多多少少学习技术知识~
以上习题&笔记从大佬们的论坛学习而来,特感谢大佬们的知识分享~ (学习技术知识,果然要看大佬们的技术博客,大家有好的推荐也欢迎指引我这个小白哈,感恩!)
学习博客参考: