測試工程師需要有運維思想和技術手段-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

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