You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何自动清理Jenkins中已删除任务的工作区目录?

Jenkins已删除项目残留工作区的解决办法

插件方案

1. Workspace Purge Plugin

这个插件专门针对已删除任务的残留工作区设计,完全匹配你的需求:

  • 支持配置定期清理任务,无需给每个项目单独设置;
  • 自动对比JENKINS_HOME/workspace/与JENKINS_HOME/jobs/目录,仅删除无对应项目的工作区;
  • 不会影响现有项目的工作区概览,满足你保留工作区的要求。

安装后在系统管理中找到对应配置项,设置好清理周期即可自动运行。

2. Scriptler Plugin(无新插件替代方案)

如果不想安装新插件,用Scriptler运行Groovy脚本是比bash更适配Jenkins的选择:

  • 编写Groovy脚本遍历workspace目录,与现有项目列表对比后删除孤儿工作区;
  • 在Jenkins中配置定时执行脚本,避免bash脚本可能出现的权限、路径适配问题。

示例脚本:

import jenkins.model.Jenkins

def jenkins = Jenkins.get()
def workspaceRoot = new File(jenkins.rootDir, "workspace")
def activeJobNames = jenkins.items.collect { it.name }

workspaceRoot.eachDir { workspaceDir ->
    if (!activeJobNames.contains(workspaceDir.name)) {
        println "清理孤儿工作区: ${workspaceDir.absolutePath}"
        workspaceDir.deleteDir()
    }
}

删除项目时同步清理工作区的方案

你提到的JENKINS-22240缺陷确实仍未修复,但有现成替代方案:

  • Job Delete Plugin:安装后删除项目时会提供选项,允许你同步删除工作区、构建历史等关联文件,从源头避免残留。
  • 若不想装插件,也可通过Jenkins脚本钩子实现,但需要编写Groovy代码监听项目删除事件,操作复杂度高于插件。

总结

最省心的组合方案:用Workspace Purge Plugin定期清理历史残留工作区,用Job Delete Plugin在删除项目时同步清理对应工作区,无需手动删除或编写硬编码脚本。

内容的提问来源于stack exchange,提问作者Nazar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 21:10:26