如何解决jenkins'磁盘空间太低'的问题?

时间:2012-04-26 01:13:02

标签: hudson jenkins centos diskspace

我已经在我的CentOS机器中部署了Jenkins,Jenkins工作了3天,但是昨天有一个'磁盘空间太低了。仅剩1.019GB。问题。

如何解决这个问题,让我的主人离线数小时?

8 个答案:

答案 0 :(得分:22)

您可以轻松地从jenkins UI更改阈值(我的版本是1.651.3):

[jenkins nodes preventing monitoring page]

更新:如何确保高磁盘空间

此功能旨在防止在可用磁盘空间较小的从站上工作。降低阈值并不能解决一些工作在完成后没有正确清理的事实。

取决于您正在建设的内容:

  1. 确保您了解构建的磁盘输出 - 如果可能 - 将输出限制为仅发生在作业工作区。使用workspace cleanup plugin将工作区清理为构建后步骤。
  2. 如果进程必须将一些数据写入外部文件夹 - 在后期构建步骤中手动清理它们。
  3. Alternative1 - 为每个作业提供一个新的奴隶(使用现场奴隶 - 有许多插件可以与不同的云提供商集成,以便按需提供飞行机器)

    Alternative2 - 在容器内运行构建。一旦构建完成,一切都将被丢弃

答案 1 :(得分:8)

除了上述解决方案之外,还有一种“常见”方式 - 直接删除Linux机器中最大的空间使用者。您可以按照以下步骤操作:

  1. 登录Jenkins机器(Putty)
  2. cd到Jenkins安装路径
  3.   

    使用ls -lart列出隐藏文件夹,通常是jenkin   安装位于.jenkins /文件夹

         

    [xxxxx~] $ ls -lart

         

    drwxrwxr-x 12 xxxx 4096 Feb 8 02:08 .jenkins /

    1. 列出文件夹空间
    2.   

      使用df -h以高级别显示磁盘空间

           

      du -sh ./*/列出当前路径中每个子文件夹的总内存。

           

      du -a /etc/ | sort -n -r | head -n 10将列出在/ etc /

      中占用磁盘空间的前10个目录
      1. 删除旧版本或其他大尺寸文件夹
      2. enter image description here

          

        通常./job/文件夹或./workspace/文件夹可以是最大的文件夹。请进入内部并根据您的需要删除(不要   删除整个文件夹。)

             

        rm -rf theFolderToDelete

答案 2 :(得分:6)

您可以通过丢弃旧版本来限制磁盘空间的减少。在项目配置中有一个复选框。

答案 3 :(得分:3)

这实际上是一个合法的问题所以我不理解downvotes,也许它属于Superuser或Serverfault。这是一个软警告阈值,而不是磁盘空间不足的硬限制。

詹金斯是一样的。结论是,对于许多小型项目,system property可以减少hudson.diagnosis.HudsonHomeDiskUsageChecker.freeSpaceThreshold

说我没有测试它并且有免责声明

  

无兼容性保证

     

一般来说,这些开关通常是实验性的,如有变更,恕不另行通知。如果您发现其中一些有用,请提交一张票,将其推广到官方功能。

答案 4 :(得分:3)

I got the same issue. My jenkins version is 2.3 and its UI is slightly different. Putting it here so that it may helps someone. Increasing both disk space thresholds to 5GB fixed the issue.

enter image description here

答案 5 :(得分:1)

我具有以下构建步骤的清理作业。您可以将其安排为@daily或@weekly。

  1. Execute system groovy script构建步骤以清理旧工作:
    import jenkins.model.Jenkins
    import hudson.model.Job

    BUILDS_TO_KEEP = 5

    for (job in Jenkins.instance.items) {
      println job.name

      def recent = job.builds.limit(BUILDS_TO_KEEP)

      for (build in job.builds) {
        if (!recent.contains(build)) {
          println "Preparing to delete: " + build
          build.delete()
        }
      }
    }

您需要安装Groovy插件。

  1. Execute shell构建步骤以清除缓存目录
rm -r ~/.gradle/
rm -r ~/.m2/

echo "Disk space"
du -h -s /

答案 6 :(得分:0)

Jenkins Job 来检查可用空间:

参数

  • FREE_SPACE :所需的可用空间为 GB

工作

#!/usr/bin/env bash

free_space="$(df -Ph . | awk 'NR==2 {print $4}')"

if [[ "${free_space}" = *G* ]]; then
  free_space_gb=${x/[^0-9]*/}

  if [[ ${free_space_gb} -lt ${FREE_SPACE} ]]; then
    echo "Warning! Low space: ${free_space}"
    exit 2
  fi
else
  echo "Warning! Unknown: ${free_space}"
  exit 1
fi


echo "Free space: ${free_space}"

插件

设置版本说明

构建后操作

  • 正则表达式Free space: (.*)
  • 说明Free space: \1

  • 构建失败的正则表达式Warning! (.*)

  • 构建失败的说明\1

答案 7 :(得分:0)

对于不知道配置在哪里的人,请从以下位置下载 tmpcleaner https://updates.jenkins-ci.org/download/plugins/tmpcleaner/

您将在此处获得一个 hpi 文件。转到 Manage Jenkins-> Manage plugins-> Advanced 然后在这里上传 hpi 文件并重新启动 jenkins

如果您转到管理节点,您可以立即看到不同之处。

由于我的 jenkins 安装在 debian 服务器中,我无法理解与此相关的大部分答案,因为我找不到 /etc/default 文件夹或 jenkins 文件。 如果有人知道 /tmp 文件夹在哪里或如何为 debian 配置它,请在评论中告诉我

enter image description here