Jenkins 管道中的 deleteDir、cleanWs 和 'WsCleanup' 有什么区别?
What is the difference between deleteDir, cleanWs, and 'WsCleanup' in Jenkins pipeline?
在Jenkinsfile
中清理工作区时都提到了这些(例如)。但是,好像有些已经过时或功能略有不同,我想了解使用哪个。
其中,deleteDir
是最常提到的,显然其他的只是调用 Jenkins 工作区清理插件的不同语法。
功能上有什么区别?推荐哪个?
deleteDir()
cleanWs()
step([$class: 'WsCleanup'])
来自官方文档:
deleteDir: Recursively delete the current directory from the workspace.
Recursively deletes the current directory and its contents. Symbolic links and junctions will not be followed but will be removed. To delete a specific directory of a workspace wrap the deleteDir step in a dir step.
因此,deleteDir
是 Workflow Basic Steps 插件(管道插件的一个组件)的方法。
cleanWs: Delete workspace when build is done.
似乎 cleanWs()
只是 Workspace Cleanup Plugin 的 step([$class: 'WsCleanup'])
的新版本。
据我了解,deleteDir
和 cleanWs
之间略有不同:cleanWs
有更多选项(如 cleanWhenAborted
、cleanWhenFailure
等。 ) 并且使用起来更加灵活,但是建议只在构建完成时使用(不确定我们是否可以在构建执行开始时使用它)。另一方面,我们可以使用 deleteDir
步骤在构建执行之前擦除工作空间。
更新 1:
post 构建 cleanWs
步骤也可以考虑构建状态,这就是为什么它应该只在构建执行后使用。
但是,在 ws-cleanup 插件下也有 preBuildCleanup
步骤。您可以在 the plugin page.
上使用 preBuildCleanup
和 cleanWs
检查示例 (DSL)
更新 2:
@aaron-d-marasco 指出最好不要在 docker 图像中使用 deleteDir
。
您可以在 this open bug.
中查看详细信息
在Jenkinsfile
中清理工作区时都提到了这些(例如
其中,deleteDir
是最常提到的,显然其他的只是调用 Jenkins 工作区清理插件的不同语法。
功能上有什么区别?推荐哪个?
deleteDir()
cleanWs()
step([$class: 'WsCleanup'])
来自官方文档:
deleteDir: Recursively delete the current directory from the workspace. Recursively deletes the current directory and its contents. Symbolic links and junctions will not be followed but will be removed. To delete a specific directory of a workspace wrap the deleteDir step in a dir step.
因此,deleteDir
是 Workflow Basic Steps 插件(管道插件的一个组件)的方法。
cleanWs: Delete workspace when build is done.
似乎 cleanWs()
只是 Workspace Cleanup Plugin 的 step([$class: 'WsCleanup'])
的新版本。
据我了解,deleteDir
和 cleanWs
之间略有不同:cleanWs
有更多选项(如 cleanWhenAborted
、cleanWhenFailure
等。 ) 并且使用起来更加灵活,但是建议只在构建完成时使用(不确定我们是否可以在构建执行开始时使用它)。另一方面,我们可以使用 deleteDir
步骤在构建执行之前擦除工作空间。
更新 1:
post 构建 cleanWs
步骤也可以考虑构建状态,这就是为什么它应该只在构建执行后使用。
但是,在 ws-cleanup 插件下也有 preBuildCleanup
步骤。您可以在 the plugin page.
preBuildCleanup
和 cleanWs
检查示例 (DSL)
更新 2:
@aaron-d-marasco 指出最好不要在 docker 图像中使用 deleteDir
。
您可以在 this open bug.