【发布时间】:2013-12-12 00:24:14
【问题描述】:
我最近从 Jenkins 中删除了 2 个作业(通过 GUI)。之后当我登录奴隶时,我仍然可以看到这两个工作的工作区。这种行为正常吗?
注意事项:
- Jenkins 主从都运行在 Windows 环境中。
- 主服务器在 Windows Server 2003 上运行,从服务器在 Windows Server 2008 R2 上运行。
- Jenkins 版本为 1.509.2
问候, 贝尼尔
【问题讨论】:
标签: jenkins
我最近从 Jenkins 中删除了 2 个作业(通过 GUI)。之后当我登录奴隶时,我仍然可以看到这两个工作的工作区。这种行为正常吗?
注意事项:
问候, 贝尼尔
【问题讨论】:
标签: jenkins
不幸的是:https://groups.google.com/forum/#!topic/jenkinsci-users/SiZ3DL-UJ-8
从属服务器上找到的工作空间不会被删除,因为这是一个不平凡的问题(这意味着作业需要记录该作业曾经执行过的每个从属服务器,并且还必须考虑离线的从属服务器,以获得真正彻底的解决方案)。
【讨论】:
我刚刚编写了一个脚本,可以定期安排清理未使用的工作区。它将遍历所有 Jenkins slave,并检查工作空间下的目录是否已在 Jenkins master 中删除。
【讨论】:
return item instanceof Folder 到return item.class.canonicalName = 'com.cloudbees.hudson.plugins.folder.Folder'。然后您可以删除import com.cloudbees.hudson.plugins.folder.Folder,您将不再需要该插件。
完善@oblio 所说的内容
这意味着作业需要记录该作业曾经执行过的每个从站
构建作业确实记录了它们在哪个从属服务器上运行,但构建可以(并且经常)在一段时间后被删除。
它还必须考虑离线的奴隶
当然,但这通常由 Jenkins 核心内置的工作空间清理功能处理,因为它作为处理当前在线从属的后台进程运行(删除很少使用的工作空间),因此任何为 的从属有时在线最终会被清理。
问题在于,此功能目前忽略了与运行时不存在的作业不对应的明显工作区,从而在保守方面犯错。 This commit of mine 重写了清理线程以修复一些其他问题,但不是这个。
【讨论】:
我遇到了一个有效的脚本,它只在磁盘空间不足时才能很好地清理并使从属服务器脱机:https://gist.github.com/rb2k/8372402
【讨论】:
Jenkins.instance.items,这意味着将不会处理已删除的作业。