测试工程师需要有运维思想和技术手段-pipeline语法介绍

1:eclipse环境的搭建

2:基本语法介绍

2.1:指定node节点或者工作空间(workspace)

  • 1:指定节点运行
pipeline {
   agent {      
       node {
           label "demo-node"  //label可以是node节点名称 也可以是node节点标签
           customWorkspace "${workspace}" //指定工作空间
       }
   }
   stages {
      stage('getCode') {
         steps {
         	echo 'workspace is ${workspace}'
            echo 'Hello World -- getCode'
         }
      }
      stage('Test') {
         steps {
            echo 'Hello World -- testing'
         }
      }
   }
}
  • 2:非指定节点运行(默认master节点运行)
pipeline {
   agent any

   stages {
      stage('getCode') {
         steps {
         	echo 'workspace is ${workspace}'
            echo 'Hello World -- getCode'
         }
      }
      stage('Test') {
         steps {
            echo 'Hello World -- testing'
         }
      }
   }
}

2.2:options选项

pipeline {
   agent any
   stages {
      stage('getCode') {
         steps {
         	echo 'workspace is ${workspace}'
            echo 'Hello World -- getCode'
         }
      }
      stage('Test') {
         steps {
            echo 'Hello World -- testing'
         }
      }
   }
}

2.3:stages阶段的定义

pipeline {
   agent any
   //下载代码打包
   stages {
      stage('getCode') { //阶段名称
         steps { //执行不愁
         	timeout(time:5 , unit:"MINUTES"){ //设置超时时间为5分钟
         		script{
         			println("拉取代码打包构建")
         		}
         	}
         }
      }
      //扫描代码
      stage('codeScan') { //阶段名称
         steps { //执行不愁
         	timeout(time:30 , unit:"MINUTES"){ //设置超时时间为30分钟
         		script{
         			println("扫描代码")
         		}
         	}
         }
      }   
   }
}

2.4:构建后的操作-POST

  • always() 总是执行的脚本片段

  • success() 成功后执行的脚本片段

  • failure() 失败后执行的脚本片段

  • aborted() 取消后执行的脚本片段

  • currentBuild 是一个全局变量

    • description:构建描述
pipeline {
   agent any
   //下载代码打包
   stages {
      stage('getCode') { //阶段名称
         steps { //执行不愁
         	timeout(time:5 , unit:"MINUTES"){ //设置超时时间为5分钟
         		script{
         			println("拉取代码打包构建")
         		}
         	}
         }
      }
      //扫描代码
      stage('codeScan') { //阶段名称
         steps { //执行不愁
         	timeout(time:30 , unit:"MINUTES"){ //设置超时时间为30分钟
         		script{
         			println("扫描代码")
         		}
         	}
         }
      }   
   }
   post {
   	always {
   		script {
   			println("这个是一直要执行的")
   		}
   	}
   	success {
   		script {
   			currentBuild.description = "/n 构建成功"
   		}
   	}
   	failure {
   		script {
   			currentBuild.description = "/n 构建失败"
   		}
   	}
   	aborted {
   		script {
   			currentBuild.description = "/n 构建取消"
   		}
   	}
   }
}

3: Jenkins shareLibrary

3.1:执行Jenkins shareLibrary

1:src目录是必须要的,类似java的标准源目录结构,执行流水线时,次目录将会添加到类路径中
2:vars托管脚本文件(非必要)
3:resources目录允许libraryResource从外部库中使用步骤加载相关的非Groovy文件(非必要)

文件目录结构如下:
在这里插入图片描述

执行jenkins的shareLibrary的步骤如下

  • 1:如果需要从git上来取jenkinsfile来执行pipeline需要做如下的配置Manage Jenkins » Configure System » Global Pipeline Libraries. (default version:为分支版本 )
    在这里插入图片描述

  • 2:Pipeline script fromSCM的方式去执行jenkinsfile

在这里插入图片描述

  • 3:pipeline script的方式去运行jenkinsfile(@Library中的参数为项目名称)
    在这里插入图片描述

  • 4:vars下面的方法可以直接调用

1:比如vars下有一个方法hello.groovy

此时我们可以在jenkinsfile中直接写hello(),这样就可以执行hello.groovy这个脚本

4:node运行

node("demo-node"){ //在节点或者标签叫着demo-node的机器上运行下面的构建步骤
    stage("GetCode"){
        
        echo 'get code'
    }  
    stage("build"){
        
        echo 'start build'
    }
}

最后可以参考:https://github.com/zeyangli/Jenkinsdocs/blob/master/chapter/第十章-流水线实践(二).md

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章