Jenkins pipeline就是Jenkins的部署流水线,Jenkinsfile就是一个文本文件,也就是部署流水线概念在Jenkins中的表现形式,所有的部署流水线的逻辑都是写在Jenkinsfile中的;Jenkins默认不支持Jenkinsfile的,所以先需要安装pipeline插件,Jenkins才支持pipeline as code.
由于历史原因,Jenkins pipeline支持两种语法。node为根结点的是脚本式语法,而pipeline为根结点的是声明式语法。Jenkins社区推荐的是声明式语法。
Jenkins团队在开始实现Jenkins pipeline时,groovy语言被选择作为基础来实现pipeline。所以,在写脚本式pipeline时,其实就是在写groovy代码。
Jenkins对这个过程进行了抽象,设计出一个基本的pipeline结构,以下为声明式语法。
pipeline{ agent any stages{ stage('build'){ steps{ echo "hello world" } } } }
- pipeline:代表整条流水线
- stage部分:代表流水线的阶段。每个阶段必须有名称。本例中,build就是此阶段的名称。
- stages部分:流水线中多个stage的容器。stages至少包含一个stage。
- steps部分:代表阶段中的一个或者多个具体的步骤的容器。steps至少包含一个步骤,本例中echo就是一个步骤。在一个stage中有且只有一个steps。
- agent部分:指定流水线的执行位置。流水线中的每个阶段都必须在某个地方(物理机、虚拟机或docker容器)执行,agent部分即指定具体在哪里执行。以上每个部分都是必需的,一个不能少,不然Jenkins会报错。
- post部分包含在整个pipeline或阶段完成后一些附加的步骤。post部分是可选的,所以并不包含在pipeline最简结构中。