测试工程师需要有运维思想和技术手段-Jenkins pipeline语法(声明式)

1:简介

详情可以参考w3c教程 https://www.w3cschool.cn/jenkins/jenkins-jg9528pb.html

  • 1:jenkins pipeline分为声明式和脚本式两中
  • 2:声明式的好处就是简单,其他的不多说,看下面的介绍

2:声明式Pipeline概述

pipeline {
 
 //里面写入决堤的stages,声明式由每一个不同的阶段构成
}

3:agent(这个指令是必须要有的)

  1. agent部分指定整个Pipeline或特定阶段将在Jenkins环境中执行的位置,具体取决于该agent 部分的放置位置。该部分必须在pipeline块内的顶层定义 ,但阶段级使用是可选的。简单来说,agent部分主要作用就是告诉Jenkins,选择那台节点机器去执行Pipeline代码。这个指令是必须要有的

  2. 例:

pipeline {
    agent any //参数any表示在哪台节点上执行任务由jenkins分配
}

agent参数

  1. any 参数any表示在哪台节点上执行任务由jenkins分配
pipeline {
    agent any //参数any表示在哪台节点上执行任务由jenkins分配
}
  1. none 当在pipeline块的顶层应用时,将不会为整个Pipeline运行分配全局代理,并且每个stage部分将需要包含其自己的agent部分
pipeline {
    agent none
    stages {
        stage('getCode'){
	        agent {
               label 'master' //指定当前stage在master节点上运行
                }
            steps{
                echo "I am on master"   
            }
        }
        stage('Scaner'){
	        agent {
               label 'node1' //指定当前stage在node1节点上运行
                }
            steps{
                echo "I am on node1"   
            }
        }
    }
}

注意:只有agent为none的时候,stage里面才能指定当前stage在特定的节点上运行

  1. label 使用提供的标签在Jenkins环境中可用的代理机器上执行Pipeline或stage内执行
pipeline {
    agent {
       label ‘节点标签或者节点名称’
    }
    stages {
        stage(‘构建’){
	    setps{
			
			}
       }
}
  1. node 和上面label功能类似,但是node运行其他选项,例如customWorkspace
pipeline {
    agent {
        node {
            label ‘节点标签或者节点名称’
            customWorkspace ’${env.JOB_NAME}/${env.BUILD_NUMBER}‘ //指定jenkins运行的工作空间
        }
    }
}

4:post-构建后的操作(非必须)

  • post部分定义将在Pipeline运行或阶段结束时运行的操作。一些条件后 的块的内支持post:部分 always,changed,failure,success,unstable,和aborted。这些块允许在Pipeline运行或阶段结束时执行步骤,具体取决于Pipeline的状态

1:always 无论Pipeline运行的完成状态如何都会执行这段代码
2:changed 只有当前Pipeline运行的状态与先前完成的Pipeline的状态不同时,才能触发运行。
3:failure 构建失败后执行
4:success 构建成功后执行
5:unstable 不稳定状态的时候执行
6:aborted 构建终止/中断的时候执行

pipeline {
    agent none
    stages {
        stage('getCode'){
            agent {
               label 'master' //指定当前stage在master节点上运行
                }
            steps{
                echo "I am on master"   
            }
        }
    }
    post{
        always{ 
            echo "I am on always"  
        }
        changed{
            script{
                echo "I am on changed"   
            }      
        }
        failure{
            script{
                echo "I am on failure"   
            }      
        }
        success{
            script{
                echo "I am on success"   
            }      
        }
        unstable{
            script{
                echo "I am on unstable"   
            }        
        }
        aborted{
             script{
                echo "I am on aborted"   
            }          
        }
    }
}

5:stages 、stage和steps的基本使用

1. stages: (必要)所有阶段的总和,所有构建动作必须在stages下进行
2. stage:(必要)一个单一的阶段
3. steps:(非必要)一个单一阶段下的执行步骤

pipeline {
    agent any 
    stages {
        stage('Build') { 
            steps {
                println "Build" 
            }
        }
        stage('Test') { 
            steps {
                println "Test" 
            }
        }
        stage('Deploy') { 
            steps {
                println "Deploy" 
            }
        }
    }
}

6:environment

  • environment指令指定一系列键值对,这些对值将被定义为所有步骤的环境变量或阶段特定步骤
    你可以写在顶层环境变量,让所有的stage下的step共享这些变量,也可以单独定义在某一个stage下,只能供这个stage去调用变量,其他的stage不能共享这些变量

  • 全局environment与局部environment参数的区别

pipeline {
    agent any
    environment{
        global = 'case1' //全局的变量,下面所有的stage都能使用这个变量
    }
    stages {
        stage('Build') {
            steps {
                echo "Hello, ${global}, nice to meet you."
            }
        }
        stage('Testcase') {
            environment{
                global2 = 'case2'//global2是局部变量只能给“Testcase”stage使用,global参数是全局的变量 他也能使用
             }
            steps {
                echo "Hello, ${global2}, nice to meet you." 
            }
        }
    }
}

7:options

  • 该options指令允许在Pipeline本身内配置Pipeline专用选项。Pipeline提供了许多这些选项,例如buildDiscarder,但它们也可能由插件提供,例如 timestamps

  • 例如

pipeline {
    agent any
    options {
        retry(3)
    }
    stages {
        stage('demo') {
            steps {
                echo "失败重试重试3次"
                sh '1/0'  //执行到这里会构建失败,有retry(3)参数,因此会重试3次
            }
        }
    }
}

你可能感兴趣的:(Jenkins)