Jenkins Pipeline的用法
阿新 • • 發佈:2020-12-22
技術標籤:JenkinsshellPipelineparallel
Jenkins Pipeline的用法
一、基本原理
Jenkins Pipeline是一套外掛,將持續交付的實現和實施整合到 Jenkins 中。Jenkins Pipeline 提供了一套可擴充套件的工具,用於將“簡單到複雜”的交付流程實現為“持續交付即程式碼”。
Pipeline 的定義通常被寫入到一個文字檔案(稱為 Jenkinsfile )中,該檔案可以被放入專案的原始碼控制庫中。
1. Pipeline指令碼的一個簡單例子:在stages{...}中可以有多個stage指定,stage之間可以順序執行,也可通過parallel並行執行,還可以巢狀stages。
pipeline { agent any stages { stage('Stage1') { steps { echo 'first execute stage.' } } stage('parallel execute stage') { parallel { //並行stage stage('Stage2.1') { steps { echo "parallel 1 start." } } stage('Stage2.2') { steps { echo "parallel 2 start." } } } } stage('Stage3') { steps { echo 'finally execute stage.' } } } }
執行是檢視效果:
二、用到的語法
最近研究pipeline並行stage,實現根據列表變數自動生成多個stage並行的功能。總結幾點pipeline語法:
1. checkout程式碼到某個目錄
dir('${dir}') { //dir:檔案路徑
git branch: 'master', url: '${git_url}' //git_url:遠端倉庫地址
}
2. 獲取引數
引數實現可配置,選取Choice型別引數化:def paramList = params.testsuites.split(',') as List,逗號分隔轉成list,實現自動生成多個stage
3. 根據列表自動生成多個stage
def doTest = paramList.collectEntries {
["${it}" : load_test(it)]
}
def load_test(test_name) {
return {
stage("test: ${test_name}") {
withEnv(["local_test_name=${test_name}"]) { // 需要withEnv([]) ,不能stage裡shell指令碼獲取不到引數值
sh label: '', script: '''echo "test1"
echo "Run test: ${local_test_name}"'''
}
}
}
}
4. parallel:並行執行
script {
parallel doTest //並行執行生成的多個stage
}