You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Jenkins中将自定义日期命名文件夹与构建关联并随构建删除?

实现构建删除时自动关联删除日期文件夹

当然可以做到!这在Jenkins场景里是很常见的需求,我给你整理了两种实用的方案,你可以根据自己的配置情况选择:

方案一:用构建变量记录路径 + 构建删除钩子脚本

这种方案适合你需要将文件夹存放在自定义路径(而非Jenkins默认工作区)的场景:

  1. 在构建步骤中记录文件夹路径到构建属性
    在你的「execute shell」步骤里,除了创建文件夹,还要把路径持久化到构建的描述中,方便后续删除脚本读取:

    # 生成带时间戳的日期文件夹名称,比如20240520_143022
    DATE_FOLDER=$(date +%Y%m%d_%H%M%S)
    # 假设你把文件夹创建在自定义存储目录,比如/opt/jenkins/build_archives/
    FOLDER_PATH="/opt/jenkins/build_archives/${DATE_FOLDER}"
    mkdir -p "${FOLDER_PATH}"
    
    # 将路径写入临时文件,供后续步骤设置构建描述
    echo "关联文件夹:${FOLDER_PATH}" > "${WORKSPACE}/build_assoc.txt"
    

    接着添加一个「Set build description」步骤,读取build_assoc.txt里的内容作为构建描述,这样每个构建的详情页里就会显示对应的文件夹路径了。

  2. 添加构建删除时的执行脚本
    先安装「Post-build Script Plugin」(如果还没装),然后在任务的「构建后操作」里添加「Execute a set of scripts」,选择「When deleting a build」作为触发时机,写入删除脚本:

    # 从构建描述中提取关联的文件夹路径
    FOLDER_PATH=$(echo "${BUILD_DESCRIPTION}" | grep -oP '关联文件夹:\K.*')
    # 路径存在则执行删除
    if [ -d "${FOLDER_PATH}" ]; then
        rm -rf "${FOLDER_PATH}"
        echo "已成功删除关联文件夹:${FOLDER_PATH}"
    else
        echo "关联文件夹不存在,跳过删除:${FOLDER_PATH}"
    fi
    

方案二:将文件夹与构建工作区绑定(更简易)

如果你的自定义工作区允许为每个构建分配独立子目录,那可以直接把日期文件夹纳入构建工作区,借助Jenkins原生功能实现联动删除:

  • 在任务配置的「高级项目选项」里,勾选「Use custom workspace」,设置路径为类似:
    /opt/jenkins/custom_workspace/${JOB_NAME}/${BUILD_NUMBER}_$(date +%Y%m%d_%H%M%S)
    
  • 这样每个构建都会拥有独立的工作区(也就是你的日期文件夹所在目录),接着在「Discard Old Builds」的高级设置里,勾选「Delete workspace when build is discarded」,以后删除构建时,Jenkins会自动删除对应的工作区目录。

注意事项

  • 确保Jenkins运行用户对文件夹所在目录有完整的读写和删除权限
  • 用方案一时,要注意构建描述的格式不要被其他内容干扰,避免脚本提取路径出错
  • 测试阶段可以先手动删除一个测试构建,检查对应的文件夹是否被正确删除

内容的提问来源于stack exchange,提问作者Morse

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 04:01:54