Jenkins管道中的deleteDir,cleanWs和'WsCleanup'有什么区别?

Jos*_*Fox 15 jenkins jenkins-plugins jenkins-pipeline

所有这些都已提到(例如在此SO问题中),用于清理中的工作区Jenkinsfile。但是,似乎有些已过时或功能略有不同,我想了解使用哪个。

其中, deleteDir是最常提及的,显然其他的只是调用Jenkins Workspace Cleanup插件的不同语法。

功能上有什么区别?推荐哪个?

deleteDir()
cleanWs()
step([$class: 'WsCleanup'])
Run Code Online (Sandbox Code Playgroud)

bir*_*230 12

从官方文档中:

deleteDir:从工作空间中递归删除当前目录。递归删除当前目录及其内容。符号链接和结点将不被遵循,但将被删除。要删除工作空间的特定目录,请将deleteDir步骤包装在dir步骤中。

因此,这deleteDirWorkflow Basic Steps插件(它是Pipeline插件的组件)的一种方法。

cleanWs:构建完成后删除工作空间。

似乎是,cleanWs()只是一个新的版本,step([$class: 'WsCleanup'])工作区清理插件

因此,据我所知,deleteDir和之间cleanWs有一点区别:cleanWs具有更多选项(例如cleanWhenAbortedcleanWhenFailure等),并且使用起来更灵活,但是建议仅在构建完成后使用(不确定是否可以在构建时使用它)。开始执行构建)。另一方面,我们可以deleteDir在构建执行之前使用步骤擦除工作空间。

  • 仅供参考 - `deleteDir` (还没有尝试过 `cleanWs`)在 WS 顶层的 docker 上下文中做了坏事;千万不要那样做。请改用 `sh("rm -rf *")` 之类的东西。 (3认同)
  • @Jidehem - 自 02/2017 起开放的错误 - https://issues.jenkins-ci.org/browse/JENKINS-41894 。基本上,docker 会感到困惑,因为安装的目录消失了。 (3认同)
  • @AaronD.Marasco 你能详细说明一下 `deleteDir` 在 WS 顶层运行时所做的_坏事_吗? (2认同)