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

如何清理Jenkins中已删除Bitbucket分支的旧结果文件?

Jenkins旧分支状态文件清理方案(手动+自动)

一、手动清理步骤

  • 登录到对应的Jenkins节点服务器(主节点或代理节点,看状态文件存在哪里)
  • 进入临时文件目录:cd /tmp
  • 先列出所有状态文件,确认旧分支对应的文件名:ls -la *__status
  • 针对性删除旧分支文件:比如旧分支叫old-pay-feature,直接执行 rm -f *old-pay-feature*__status
  • 要是旧分支太多,可先把已删除的分支名整理到stale-branches.txt(每行一个分支名),循环批量删除:
    while read branch; do
      rm -f *${branch}*__status
    done < stale-branches.txt
    
  • 也可以按文件过期时间清理,比如删除7天前的所有状态文件:find /tmp -name "*__status" -mtime +7 -delete

二、自动清理方案

1. 在每日检查任务里加前置清理逻辑

直接修改现有解析脚本,开头加上清理步骤,两种思路:

  • 精准匹配已删分支:先拉取Bitbucket当前有效分支列表,对比后删除无效文件(需Bitbucket个人令牌,节点要装curl和jq)
    # 替换成你的Bitbucket仓库信息和令牌
    VALID_BRANCHES=$(curl -s -u 你的用户名:应用密码 https://api.bitbucket.org/2.0/repos/团队名/仓库名/refs/branches | jq -r '.values[].name')
    
    # 遍历状态文件,删除不在有效分支列表里的文件
    for file in /tmp/*__status; do
      # 假设文件名格式是 ${NODE_NAME}__${分支名}__status,提取分支名
      BRANCH=$(echo "$file" | awk -F'__' '{print $2}')
      if ! echo "$VALID_BRANCHES" | grep -q "^$BRANCH$"; then
        rm -f "$file"
        echo "清理旧分支状态文件:$BRANCH"
      fi
    done
    
  • 按时间自动清理:适合分支迭代快、旧文件无保留价值的场景,脚本开头加:
    # 删除7天前的状态文件,天数可按需调整
    find /tmp -name "*__status" -mtime +7 -delete
    

2. 单独建Jenkins定时清理任务

新建一个Freestyle或Pipeline任务,设置在每日检查任务之前运行(比如用Cron表达式0 7 * * *,每天早上7点执行),任务内容就是上面的清理脚本,完全不影响现有检查任务。

3. 从根源优化状态文件生成

最彻底的办法是改流水线逻辑:

  • 每次生成__status文件前,先检查分支在Bitbucket是否存在,不存在就跳过生成/更新
  • 或者每次生成新文件时,先删除对应分支的旧文件,再写入新结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 23:42:43