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

Docker部署的TeamCity代理制品持续累积无法自动清理问题求助

TeamCity代理构建制品(视频文件)累积问题解决方案

根因说明

该问题本质是TeamCity代理的构建工作目录默认不会自动清理历史构建生成的文件,旧测试产生的视频文件一直残留在工作目录的reports文件夹下,每次上传制品时会把所有历史文件一同上传。你之前调整的artifacts_cache相关配置是用于缓存从服务端下载的制品,和构建本地生成的文件无关,因此不会生效。

可行解决方案

方案1:构建前主动清理报告目录(最推荐,不影响构建速度)

在构建步骤最开头新增执行脚本的步骤,直接清空本次构建工作目录下的reports文件夹即可:

  • Linux代理执行命令:
rm -rf ./reports && mkdir -p ./reports
  • Windows代理执行命令:
rmdir /s /q reports 2>nul && mkdir reports

方案2:配置构建自动清理全工作目录

如果不需要保留工作目录内的任何历史文件,可以直接开启构建级别的自动清理配置:

  1. 打开对应构建的配置页面,进入「版本控制设置」选项卡
  2. 点击「检出规则」旁的「高级设置」
  3. 找到「清理工作目录」选项,选择「每次构建前清理所有文件」
    开启后每次构建拉取代码前会清空整个工作目录,彻底避免历史文件残留,适合没有大体积本地依赖缓存的构建场景。

方案3:调整制品上传规则,仅上传本次生成的内容

你已经用时间戳生成独立的视频目录,可以配合TeamCity内置变量调整制品上传规则,仅同步本次构建生成的内容:

  1. 在构建中把本次生成视频的时间戳导出为TeamCity环境变量,比如命名为REPORT_VIDEO_DIR
  2. 将原制品规则reports/**/*调整为:
reports/html/**/* => reports
reports/%REPORT_VIDEO_DIR%/**/* => reports/%REPORT_VIDEO_DIR%

这样即使工作目录有历史视频目录,也不会被上传到制品中。

方案4:代理端全局配置构建前钩子(多项目通用场景)

如果多个项目都有类似的清理需求,可以在TeamCity代理侧配置全局前置脚本:

  1. 进入代理配置目录 /data/teamcity_agent/conf/
  2. 新建 pre-build.sh 脚本,写入需要全局执行的清理命令,例如:
if [ -d "./reports" ]; then rm -rf ./reports; fi
mkdir -p ./reports
  1. 给脚本添加执行权限:chmod +x pre-build.sh
    配置完成后所有在该代理上运行的构建,执行前都会自动清理reports目录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 00:09:02