52

我已经在我的CentOS机器上部署了 Jenkins,Jenkins运行了 3 天,但是昨天出现了Disk space is too low. Only 1.019GB left.问题。

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

4

8 回答 8

35

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

[ 詹金斯节点阻止监控页面]


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

此功能旨在防止在可用磁盘空间不足的从站上工作。降低阈值并不能解决某些作业在完成后无法正确清理的事实。

根据您正在构建的内容:

  1. 确保您了解构建的磁盘输出是什么 - 如果可能的话 - 将输出限制为仅发生在作业工作区。使用工作区清理插件将工作区清理为后期构建步骤。
  2. 如果该过程必须将一些数据写入外部文件夹 - 在构建后步骤中手动清理它们。

Alternative1 - 为每个作业提供一个新的从属(使用现场从属 - 有许多插件与不同的云提供商集成以按需提供动态机器)

Alternative2 - 在容器内运行构建。构建完成后,所有内容都将被丢弃

于 2016-12-22T12:42:23.773 回答
25

除了上述方案,还有一种更“常见”的方式——直接从Linux机器上删除最大的空间消耗者。您可以按照以下步骤操作:

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

ls -lart用于列出隐藏文件夹,通常 jenkin 安装放在 .jenkins/ 文件夹中

[xxxxx ~]$ ls -lart

drwxrwxr-x 12 xxxx 4096 2 月 8 日 02:08 .jenkins/

  1. 列出文件夹空间

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

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

du -a /etc/ | sort -n -r | head -n 10将列出 /etc/ 中占用磁盘空间的前 10 个目录

  1. 删除旧版本或其他大型文件夹

在此处输入图像描述

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

rm -rf theFolderToDelete

于 2017-02-14T07:22:43.660 回答
8

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

于 2012-05-17T22:16:52.577 回答
3

这实际上是一个合法的问题,所以我不理解反对意见,也许它属于超级用户或服务器故障。这是磁盘空间不足的软警告阈值,而不是硬限制。

詹金斯也是一样。结论是对于许多小型项目, 调用的系统属性hudson.diagnosis.HudsonHomeDiskUsageChecker.freeSpaceThreshold可以减少。

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

没有兼容性保证

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

于 2012-06-26T04:09:22.353 回答
3

我遇到了同样的问题。我的 jenkins 版本是 2.3,它的 UI 略有不同。把它放在这里,以便它可以帮助某人。将两个磁盘空间阈值都增加到 5GB 解决了这个问题。

在此处输入图像描述

于 2018-07-25T05:15:52.920 回答
1

要检查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
于 2019-10-06T15:57:36.840 回答
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 /
于 2020-03-12T07:04:09.633 回答
0

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

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

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

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

在此处输入图像描述

于 2021-01-18T11:54:58.607 回答