Jenkins磁盘空间自动清理

背景介绍

Jenkins作为一款广泛应用于自动化构建、测试与部署的强大工具,在长时间运作后,其服务器上积累了大量的构建历史、工作空间、日志文件以及其他临时数据。每次构建都会生成一系列的工作产物,随着时间的推移,这些数据逐渐占据了大量的磁盘空间,尤其在频繁构建和长期运行的项目中更为明显。

Jenkins的磁盘清理的内容主要包括两大块,一是构建记录(Build Artifacts),二是工作空间(workspace)。这两部分是占用磁盘空间最多的目录。清理空间的方式也是多种多样,可以通过登陆到Jenkins控制台,进入到每个Job的配置页面,选择删除旧的构建和Artifact,也可以通过安装插机,例如Workspace Cleanup Plugin,在构建后自动清理工作空间,还可以通过脚本的方式自定义脚本的方式按照特定天数删除旧构建。本文我们介绍的是通过自定义脚本的方式,保留特定天数的构建记录。

实现步骤

  1. 编写脚本,该脚本实现逻辑主要是通过判断目录的最新时间,保留近一个月的构建记录,超过一个月的就自动删除,通过find命令定义需要清理的项目目录,如下:

    #!/bin/bash

    #jenkins 构建项目目录
    DIR="/home/user/.jenkins/jobs/"

    #保留天数
    OLDEST_DATE=(date -d "(date +%Y-%m-%d) -30 days" +%s)

    #添加项目 "Product" 和 "Dev"
    for DIRECTORY in (find "DIR" -maxdepth 1 -type d -name "Product" -o -name "Dev" | sort); do
    if [ -d "DIRECTORY/builds" ]; then echo "Processing DIRECTORY/builds directory..."
    find "DIRECTORY/builds" -maxdepth 1 -type d -name "[0-9]*" | while read LINE do MOD_DATE=(stat -c %Y "LINE") if [[ MOD_DATE -lt $OLDEST_DATE ]]; then

    复制代码
         echo "Deleting old directory ${LINE}"
         ls -ld ${LINE}
         rm -rf "${LINE}"
       fi
     done

    else
    echo "Skipping $DIRECTORY/builds directory..."
    fi
    done

  2. 添加定时任务

    #crontab -e
    0 23 * * * /root/script/Jenkins_disk_clenup.sh > /dev/null 2>&1 &

知识扩展

Jenkins目录结构
  1. config.xml:Jenkins根配置文件,包含全局配置信息。

  2. jobs目录:存储各个构建作业(Job)的配置和状态信息,每个job在该目录下都有一个子目录(项目构建的名称)。

  • <job_name>/config.xml:存储该job的配置详情。

  • <job_name>/builds/:每个构建编号下有构建结果和相关的工件(artifacts)。

  1. workspace/<job_name>:存储每个job的工作空间,当Jenkins执行构建时,会在此处下载源代码并执行构建过程。

  2. plugins目录:存放已安装的Jenkins插件及其相关数据。

  3. logs目录:存放Jenkins和各个插件的日志文件。

  4. userContent目录:放置可供HTTP访问的静态文件。

  5. nodes目录:在分布式环境中,用于存储节点(agent)的配置信息。

  6. credentials.xml:存储凭证信息,如访问Git仓库或其他服务所需的认证凭据。

相关推荐
悟能不能悟1 分钟前
Spring Boot 中处理跨域资源
java·spring boot·后端
qq_12498707533 分钟前
基于springboot+vue的无人机共享管理系统(源码+论文+部署+安装)
java·vue.js·spring boot·后端·毕业设计·无人机·计算机毕业设计
多多*7 分钟前
计算机网络相关 讲一下rpc与传统http的区别
java·开发语言·网络·jvm·c#
源码获取_wx:Fegn08958 分钟前
计算机毕业设计|基于springboot + vue网上超市系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·spring·课程设计
码农水水10 分钟前
阿里Java面试被问:Online DDL的INSTANT、INPLACE、COPY算法差异
java·服务器·前端·数据库·mysql·算法·面试
小旭952711 分钟前
【Java 基础】IO 流 全面详解
java·开发语言
Coder_Boy_13 分钟前
基于SpringAI的在线考试系统-阅卷评分与错题管理模块回归测试逻辑梳理文档
java·spring boot·系统架构·ddd·tdd·全栈开发
那起舞的日子14 分钟前
Java线程池-执行顺序
java
先做个垃圾出来………15 分钟前
Linux/Unix系统下的基础文本处理命令
java·linux·unix
风若飞15 分钟前
Linux 环境下解决 Tomcat8 与 JDK8 配置问题
java·linux·运维·服务器·tomcat