一.介绍
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。