【问题标题】:Deleting Jenkins jobs through GUI does not delete their workspaces in slaves通过 GUI 删除 Jenkins 作业不会删除从属中的工作区
【发布时间】:2013-12-12 00:24:14
【问题描述】:

我最近从 Jenkins 中删除了 2 个作业(通过 GUI)。之后当我登录奴隶时,我仍然可以看到这两个工作的工作区。这种行为正常吗?

注意事项:

  • Jenkins 主从都运行在 Windows 环境中。
  • 主服务器在 Windows Server 2003 上运行,从服务器在 Windows Server 2008 R2 上运行。
  • Jenkins 版本为 1.509.2

问候, 贝尼尔

【问题讨论】:

    标签: jenkins


    【解决方案1】:

    不幸的是:https://groups.google.com/forum/#!topic/jenkinsci-users/SiZ3DL-UJ-8

    从属服务器上找到的工作空间不会被删除,因为这是一个不平凡的问题(这意味着作业需要记录该作业曾经执行过的每个从属服务器,并且还必须考虑离线的从属服务器,以获得真正彻底的解决方案)。

    【讨论】:

    【解决方案2】:

    我刚刚编写了一个脚本,可以定期安排清理未使用的工作区。它将遍历所有 Jenkins slave,并检查工作空间下的目录是否已在 Jenkins master 中删除。

    https://gist.github.com/ceilfors/1400fd590632db1f51ca

    【讨论】:

    • 您的脚本不适合我。它找不到 cloudbees 文件夹类
    • @Adam CloudBees 文件夹类可通过安装CloudBees Folder Plugin 获得。如果您不想安装插件,可以稍微修改脚本以删除文件夹支持。
    • @Adam 即使您没有 Cloudbees 文件夹插件,您也可以使此脚本工作,但如果您开始使用它,如果您更改条件 inisFolder( ) 从return item instanceof Folderreturn item.class.canonicalName = 'com.cloudbees.hudson.plugins.folder.Folder'。然后您可以删除import com.cloudbees.hudson.plugins.folder.Folder,您将不再需要该插件。
    【解决方案3】:

    完善@oblio 所说的内容

    这意味着作业需要记录该作业曾经执行过的每个从站

    构建作业确实记录了它们在哪个从属服务器上运行,但构建可以(并且经常)在一段时间后被删除。

    它还必须考虑离线的奴隶

    当然,但这通常由 Jenkins 核心内置的工作空间清理功能处理,因为它作为处理当前在线从属的后台进程运行(删除很少使用的工作空间),因此任何为 的从属有时在线最终会被清理。

    问题在于,此功能目前忽略了与运行时不存在的作业不对应的明显工作区,从而在保守方面犯错。 This commit of mine 重写了清理线程以修复一些其他问题,但不是这个。

    【讨论】:

      【解决方案4】:

      我遇到了一个有效的脚本,它只在磁盘空间不足时才能很好地清理并使从属服务器脱机:https://gist.github.com/rb2k/8372402

      【讨论】:

      • 这个脚本没有回答原始问题。该脚本只是删除从服务器中找到的所有作业。删除现有工作的工作空间是不好的,因为它会减慢 CI,即所有内容都需要重新检查,并且空间无论如何都会重新增长。
      • 确实,它不像外科手术那样。仍然存在的作业将重新增长,但已删除的作业不会。您能否更新脚本以检查作业是否仍然有效?
      • 这就是我在回答中的脚本试图做的事情。此外,您答案中的脚本不会删除已删除作业的工作区,因此 一切都会重新长出来。如果您阅读脚本,它显然会遍历Jenkins.instance.items,这意味着将不会处理已删除的作业。
      • 嗯,脚本不是我写的,但对我来说很有效。也许 Jenkins.instance.items 的工作方式与我们预期的不同?
      • 我知道它不是你写的,因此我写了“你的答案中的脚本”:) Jenkins.instance.items 几乎不可能返回已删除的作业。起初它对我有效,但随着时间的推移它会恢复。如果它对你有用,那就太好了!
      猜你喜欢
      • 1970-01-01
      • 2020-06-27
      • 1970-01-01
      • 1970-01-01
      • 2011-12-21
      • 1970-01-01
      • 1970-01-01
      • 2017-02-09
      • 2018-03-06
      相关资源
      最近更新 更多