提到这些都是为了清理Jenkinsfile
中的工作区(例如in this SO question)。但是,似乎有些已过时或功能略有不同,我想了解使用哪一种。
其中,deleteDir
是最常提及的,显然其他的只是调用Jenkins Workspace Cleanup插件的不同语法。
功能上有什么区别?推荐哪个?
deleteDir()
cleanWs()
step([$class: 'WsCleanup'])
最佳答案
从官方文档中:
因此,deleteDir
是Workflow Basic Steps插件(它是Pipeline插件的组件)的一种方法。
似乎cleanWs()
只是Workspace Cleanup Plugin的step([$class: 'WsCleanup'])
的新版本。
据我了解,deleteDir
和cleanWs
之间略有不同:cleanWs
具有更多选项(例如cleanWhenAborted
,cleanWhenFailure
等),并且使用起来更灵活,但是建议仅在构建完成后使用(不确定是否可以使用)它在构建执行开始时)。另一方面,我们可以在构建执行之前使用deleteDir
步骤擦除工作空间。
更新1:
生成后cleanWs
后的步骤还可以考虑到生成状态,这就是为什么仅在执行生成后才使用它的原因。
但是,在 ws-cleanup 插件下,还有preBuildCleanup
步骤。您可以在the plugin page上同时使用preBuildCleanup
和cleanWs
来检查示例(DSL)。
更新2:
@ aaron-d-marasco指出,最好不要在Docker镜像中使用deleteDir
。
您可以在this open bug中检查详细信息。
关于jenkins - Jenkins管道中的deleteDir,cleanWs和 'WsCleanup'有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54019121/