一、声明式流水线核心概念

1、pipeline:声明其内容为一个声明式的pipeline脚本;

2、agent:执行节点(job运行的slave或者master节点);

3、stages:阶段集合,包裹所有的阶段(例如:打包,部署等各个阶段);

4、stage:阶段,被stages包裹,一个stages可以有多个stage;

5、steps:步骤,为每个阶段的最小执行单元,被stage包裹;

6、post:执行构建后的操作,根据构建结果来执行对应的操作;

3.2.3.1 pipeline

作用域:应用于全局最外层,表明该脚本为声明式pipeline
是否必须:必须
参数:无

3.2.3.2 agent

作用域:可用在全局与stage内
是否必须:是,
参数:any, none, label, node, docker, dockerfile

参考示例:
//运行在任意的可用节点上
agent any

//全局不指定运行节点,由各自stage来决定
agent none

//运行在指定标签的机器上,具体标签名称由agent配置决定
agent { label 'master' }

//node参数可以扩展节点信息
agent {
     node {
         label 'master'
         customWorkspace 'xxx'
     }
}

//使用指定运行的容器
pipeline{
   agent none
   stages{
       stage('build Test'){
              agent {docker 'maven:3-alpine'}
              steps{
                   echo "Build Test"
                   }
                }
       stage('Example Test'){
              agent {docker 'openjdk:8-jre'}
              steps{
                  echo "Exmaple Test"
                }
             }
         }
}

3.2.3.3 stages

作用域:全局或者stage阶段内,每个作用域内只能使用一次
是否必须:全局必须
参数:无

参考示例:
pipeline{
    agent any
    stages{
        stage("first stage"){
            stages{  //嵌套在stage里
                stage("inside"){
                    steps{
                        echo "inside"
                    }
                }
                stage("inside_two"){
                    steps{
                        echo "inside_two"
                    }
                }
            }
        }
        stage("stage2"){
            steps{
                echo "outside"
            }
        }
    }
}

3.2.3.4 stage

作用域:被stages包裹,作用在自己的stage包裹范围内
是否必须:必须
参数:需要一个string参数,表示此阶段的工作内容
备注:stage内部可以嵌套stages,内部可单独制定运行的agent