Jenkins Pipeline 有兩種寫法: Declarative 以及 Scripted,前一種使用了Jenkins基於Groovy實現的DSL,寫起來相對有限制;后一種可以很好的在Jenkinsfile 中使用Groovy語句。 下面記錄Scripted模式下常見的一些注意點:
1.
如何退出當前的build
a. 中斷退出:
currentBuild.result = 'ABORTED'
echo "沒有項目被選中"
return
b. 錯誤退出
error “錯誤信息”
c. 不穩定退出
unstable “信息”
2.
如何從一個Stage 傳值到另一個:
env.PREVIOUSE_STAGE_VALUE = “” // 必須String
下一個Stage 直接使用 def accept = env.PREVIOUSE_STAGE_VALUE
或者:
定義一個全局變量
3.
gitlab 如何獲取指定分支后者版本的代碼?
使用 checkout 功能,不用 git 功能
4.
如何切換目錄
使用 dir 方法
5.
如何讀取上一個Stage 存的文件:
def content = readFile “path”
6.
如何提示用戶輸入:
def inputStr = input message: "select project" , ok : “確認”, parameters: [extendedChoice(description: 'select projects to be compiled', multiSelectDelimiter: ',', name: 'project_name', quoteValue: false, saveJSONParameterToFile: false, type: 'PT_CHECKBOX', value: "$choices", visibleItemCount: choices.size())]
def INPUT_PARAMS = input message: "輸入配置", ok: '確認', parameters : [
text(defaultValue: "", description: '請提供Tag的名字', name: 'tag_name'),
text(defaultValue: "", description: '請提供Tag的描述', name: 'tag_desc'),
text(defaultValue: "${output_version}", description: '請設置版本,為空則不會打Tag', name: 'custom_versions')
]
def custom_versions = INPUT_PARAMS.custom_versions
7.
如何動態的並行任務:
def tasks = [:] //定義一個用例保存task 的 map
tasks.”task name” = {一個閉包}
parallel tasks //並行所有task