一、声明式流水线核心概念¶
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