Bamboo build-dir 过多 space 可以用 cron 作业清理吗?

Bamboo build-dir excessive space can it be cleaned up with a cron job?

我们使用 Bamboo CI。在许多计划中有多个 bamboo 本地代理和并行构建。 bamboo-home 中的 build-dir 有数百 GB,分析表明它只是随着新功能 b运行ches 的添加而不断增长。计划似乎在每个本地代理目录中重复,也直接在构建目录中。

与过期工件不同,Bamboo 似乎不会自行清理它。例如,如果删除本地代理,则本地代理构建目录将永远占据那里,占用大量 space.

计划可以设置为在构建结束时进行清理,但是如果需要对构建进行 post-mortem,这会影响问题分析。

由于 space 中的目录 运行,我刚刚添加了每日 cron 任务以定期删除超过 21 天未访问的文件和目录。当我第一次 运行 手动执行此操作时,我从 600GB 的分区中回收了 300GB。我想知道其他人是否遇到过同样的问题,以及从长远来看外部清理构建目录是否安全。它会影响竹子建筑吗?有没有我错过的竹子选项可以为我做这个?

在 Atlassian 网站上搜索没有帮助,也没有找到答案...其他人正在做什么来驯服这头 space 猪?

cron 作业已经 运行 一段时间了,没有任何问题,它正在控制 space 的使用。

我已将参数减少到 15 天。

我的 crontab 看起来像这样:

# clean up old files from working directory
0 20 * * * find /<path_to>/bamboo-home/xml-data/build-dir/ -depth -not -path *repositories-cache* -atime +15 -delete

# clean up old backups every Sunday
0 21 * * 0 find /<path_to>/bamboo-home/backups -type f -mtime +28 -delete

# remove any old logs from install directory after 15 days
0 22 * * * find /<path_to>/bamboo/logs/ -type f -mtime +15 -delete

# quick and dirty truncate catalina.out to stop it growing too large (or better still use logrotate) 
0 23 * * * cat /dev/null > /<path_to>/bamboo/logs/catalina.out

我希望这对其他试图驯服 bamboo 的磁盘space 用法的人有用。 第一份工作很重要,后三份只是家务

N.B。由于我公司外包 linux 环境的独特情况,logrotate 未在 catalina.out 上使用。如果可能的话,我通常会推荐 logrotate 而不是我快速而肮脏的 truncate 方法 - 请参阅 Jon V 的回答。

虽然 cron 想法运作良好 - 我过去也用 Bamboo 做过的事情是 "Clean working directory after each build" 选项。基本上,对于任何给定的作业,都有一个配置选项可以为给定的 plan/job:

清理适当的 build-dir/<build_plan_job> 目录

操作 -> 配置计划 -> 单击作业 -> 杂项选项卡 -> 第一个复选框

虽然这可以确保清理未来构建的暂存区域,但它不会帮助已经存在的 and/or 旧构建。考虑到正常的 git 风格的工作流程,其中有很多分支(并且每个分支为其创建一个特定的作业 ID(如 PLAN-JOB_WITH_BRANCH_NUMBER-BUILD_NUMBER 或类似的),可以快速获得 old/large。我刚刚做了一个快速检查,我们现在正在清理大多数构建(至少是大型构建)的构建区域,但是我们有超过 100Gig 的构建 cruft 来自很久以前合并的分支。

不过,感谢您提供 cron 示例,它在未来应该可以正常工作。

无关:我越用 Bamboo,我就越 love/hate 它。

编辑:作为一般性评论,我会非常努力与SA合作以获得logrotate规则集up/implemented 对于 catalina.out - 用 /dev/null 覆盖似乎是一个非常糟糕的主意,除非你已经用 ELK 或 Splunk 之类的东西吞噬了它们。

我的 /etc/logrotate.d/bamboo_catalina_out 看起来像(使用您的路径):

/<path_to>/bamboo/logs/catalina.out {
  create 0660 bamboo bamboo
  compress
  copytruncate
  missingok
  rotate 10
  size 100M
}

最后 - 你有第三个和第四个 cron 脚本的原因吗?