我们使用Bamboo CI。许多计划中有多个竹本地代理和并行构建。 Bamboo-home中的build-dir有数百GB,分析显示它随着新功能分支的增加而不断增长。计划似乎在每个本地代理目录中重复,也直接在build-dir中重复。
与过期的工件不同,Bamboo似乎并没有自己清理它。例如,如果删除了本地代理,则本地代理构建目录将永远占用大量空间。
可以将计划设置为在构建结束时进行清理,但是如果需要对构建进行事后验证,这会影响问题分析。
由于目录空间不足,我刚刚添加了每日cron任务,以定期删除超过21天未访问过的文件和目录。当我第一次手动运行时,我从600GB分区中回收了300GB。我想知道其他人是否遇到过同样的问题,以及从长远来看外部清理build-dir是否安全。它会影响竹子的建造吗?是否有一些我错过的竹子选项会为我做这个?
在Atlassian网站上搜索没有帮助,也没有答案......其他人正在做些什么来驯服这个太空猪?
答案 0 :(得分:10)
cron作业现在已经运行了一段时间没有任何问题,它正在控制空间使用。
我已将参数缩减为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
我希望这对于试图驯服竹子磁盘空间使用的其他人有用。 第一份工作是重要工作,最后三份工作只是家务。
N.B。由于我的公司外包linux环境的独特情况,catalina.out上没有使用logrotate。我通常会建议logrotate,如果可能的话,而不是我的快速和脏的截断方法 - 请参阅Jon V的答案。
答案 1 :(得分:3)
虽然cron的想法运作良好 - 我过去在Bamboo中所做的事情是“每次构建后清理工作目录”选项。基本上,对于任何给定的作业,都有一个配置选项可以清理给定计划/作业的相应build-dir/<build_plan_job>
目录:
行动 - &gt;配置计划 - &gt;点击工作 - &gt; Miscelaneous Tab - &gt;第一个复选框
虽然这可以确保清除未来的构建临时区域,但它对现有和/或旧构建提供了 not 帮助。鉴于正常的git样式工作流,你有很多分支(并且每个分支为它创建一个特定的作业ID(如PLAN-JOB_WITH_BRANCH_NUMBER-BUILD_NUMBER
或类似的),它会快速变大/大。我只是做了一个快速检查,我们'现在重新清理大多数构建的构建区域(至少是大型构建区域),但是我们有超过100Gig的构建区域已经合并到了loooong之前。
感谢cron的例子,这对未来应该可行。
无关:我使用Bamboo越多,我就越喜欢/讨厌它。
编辑:作为一般性评论,我会尝试非常努力与SA合作,为{{1}设置/实施logrotate规则用 - catalina.out
覆盖似乎是一个非常糟糕的主意,除非你已经用ELK或Splunk之类的东西搞砸了它们。
我的/dev/null
看起来像(使用你的路径):
/etc/logrotate.d/bamboo_catalina_out
最后 - 有没有理由同时拥有第三和第四个cron脚本?