一.介紹
post步驟包含的是在整個pipeline或階段完成后一些附加的步驟。post步驟是可選的,所以並不包含在聲明式pipeline最簡結構中,但這並不代表它作用不大。
通常用於異常處理,若上個階段執行失敗,則做某些操作。例如上個階段清理依賴包,判斷清理失敗后,就發送郵件進行報警並退出。
二.參數說明
參數位置:
pipeline或steps部分,根據完成狀態,做出判斷。
具體參數:
- always:不論當前完成狀態是什么,都執行
- changed:只要當前完成狀態與上一次完成狀態不同就執行
- fixed:上一次完成狀態為失敗或不穩定(unstable),當前完成狀態為成功時執行
- regression:上一次完成狀態為成功,當前完成狀態為失敗、不穩定或中止(aborted)時執行
- aborted:當前執行結果是中止狀態時(一般為人為中止)執行
- failure:當前完成狀態為失敗時執行
- success:當前完成狀態為成功時執行
- unstable:當前完成狀態為不穩定時執行
- cleanup:清理條件塊。不論當前完成狀態是什么,在其他所有條件塊執行完成后都執行。post部分可以同時包含多種條件塊。以下是post部分的完整示例
注意:
- post步驟在階段中,為steps后面抒寫
- post步驟的每個判斷,都會匹配,而非第一個匹配了,其它就跳過了
三.使用實例
編寫簡單實例:
pipeline {
agent any
stages {
stage('test') {
steps {
echo 'test'
}
post {
always {
echo "post condition executed: always ..."
}
changed {
echo "post condition executed: changed ..."
}
aborted {
echo "post condition executed: aborted ..."
}
}
}
}
}
文章編寫時,添加了regression選項的判斷,但執行報了以下錯誤,說明當前pipeline插件不支持這個選項,所以在上面例子中去掉了。
再次執行,可以看到顯示2個輸出,always每次都會顯示,因為上次失敗,本次steps的echo執行成功,就顯示了changed。