Jenkins deleteDir、cleanWs和'之间的区别是什么;WsCleanup&x27;詹金斯管道?
例如,在清理Jenkins deleteDir、cleanWs和'之间的区别是什么;WsCleanup&x27;詹金斯管道?,jenkins,jenkins-plugins,jenkins-pipeline,Jenkins,Jenkins Plugins,Jenkins Pipeline,例如,在清理Jenkinsfile中的工作区时都提到了这些。然而,似乎有些已经过时,或者功能稍有不同,我想知道应该使用哪一种 其中,deleteDir是最常提到的,显然其他的只是调用Jenkins工作区清理插件的不同语法 功能上的区别是什么?推荐哪一种 deleteDir() cleanWs() step([$class: 'WsCleanup']) 从官方文件: :从工作区递归删除当前目录。 递归删除当前目录及其内容。符号链接和连接将不被遵循,但将被删除。要删除工作区的特定目录,请在目录步骤
Jenkinsfile
中的工作区时都提到了这些。然而,似乎有些已经过时,或者功能稍有不同,我想知道应该使用哪一种
其中,deleteDir
是最常提到的,显然其他的只是调用Jenkins工作区清理插件的不同语法
功能上的区别是什么?推荐哪一种
deleteDir()
cleanWs()
step([$class: 'WsCleanup'])
从官方文件: :从工作区递归删除当前目录。 递归删除当前目录及其内容。符号链接和连接将不被遵循,但将被删除。要删除工作区的特定目录,请在目录步骤中包装deleteDir步骤 因此,
deleteDir
是一种插件方法(它是管道插件的一个组件)
:生成完成时删除工作区
似乎cleanWs()
只是步骤([$class:'WsCleanup'])
的新版本
据我所知,在deleteDir
和cleanWs
之间有一点不同:cleanWs
有更多的选项(如cleanWhenBorted
,cleanWhenFailure
,等等),使用起来更灵活,但建议仅在构建完成时使用(不确定是否可以在构建执行开始时使用它)。另一方面,我们可以在构建执行之前使用deleteDir
步骤擦除工作区
更新1:生成后
cleanWs
步骤也可以考虑生成状态,这就是为什么只有在生成执行之后才应该使用它。但是,在ws-cleanup插件下也有
preBuildCleanup
步骤。您可以在preBuildCleanup
和cleanWs
都打开的情况下检查示例(DSL)
更新2:@aaron-d-marasco指出,最好不要在docker图像中使用
deleteDir
。
您可以在中查看详细信息。谢谢。我添加了一个指向该问题的链接(这实际上是我在此处提问的触发点。)该问题提到了这些,但没有说明这些选项之间的区别。我的问题已链接到其他问题,并添加了更多信息的请求。我进行了编辑,以进一步澄清我要查找的其他信息仅供参考-
deleteDir
(尚未尝试cleanWs
)在WS的顶层docker上下文中做坏事;不要这样做取而代之。@AaronD.Marasco您能详细说明一下deleteDir
在WS的顶级运行时所做的坏事吗?@Jidehem-bug自2017年2月开始出现。基本上,docker会因为挂载的目录消失而感到困惑。知道为什么cleanWs()吗
不建议在管道开始时使用?@Arghya似乎是因为以下原因:生成后cleanWs()
步骤也可以考虑生成状态。但是,在ws-cleanup插件下有preBuildCleanup()
方法。您可以在插件页面上查看示例: