Jenkins流水线Post段中always与cleanup条件的差异是什么?
Jenkins Pipeline Post段中always与cleanup的区别
虽然always和cleanup在流水线任意状态下都会执行,但两者的执行时机和适用场景有明确区别:
执行时机不同
always:会在流水线(或对应阶段)的主体流程结束后立刻执行,是Post段中较早触发的块,不受其他Post条件块的影响,只要主体流程结束就会运行。cleanup:是Post段里最后执行的块——它会等所有其他Post条件块(比如success、failure、changed、always)都执行完成后,才会启动。
适用场景不同
always:适合做需要及时触发的收尾动作,比如发送流水线执行结果通知(不管成败都要同步给团队)、生成统一的执行记录文件。cleanup:专门用于资源清理操作,比如删除流水线运行时生成的临时目录、关闭临时启动的测试容器、释放占用的云资源。因为它最后执行,能确保其他Post步骤(比如失败时收集故障日志)完成后再清理,避免过早清理导致后续步骤丢失必要数据。
举个实际执行顺序的例子:如果你的Post段包含success、failure、always、cleanup,那么执行顺序是:
- 根据流水线状态执行
success或failure - 执行
always块 - 最后执行
cleanup块
内容的提问来源于stack exchange,提问作者Anna
相关产品推荐
相关产品推荐

