Continuous integration 如果空间过大,可以用cron作业清理吗?

Continuous integration 如果空间过大,可以用cron作业清理吗?,continuous-integration,bamboo,diskspace,Continuous Integration,Bamboo,Diskspace,我们用竹词。有多个本地代理和跨多个计划的并行构建。竹之家中的builddir有数百千兆字节,分析表明,随着新功能分支的添加,它会不断增长。计划似乎在每个本地代理目录中重复,也直接在build dir中重复 与即将过期的文物不同,竹子似乎无法自行清理。例如,如果删除了一个本地代理,那么本地代理构建目录将永远占据大量空间 可以设置计划在构建结束时进行清理,但是如果需要对构建进行事后检查,这会影响问题分析 由于目录空间不足,我刚刚添加了一个每日cron任务,定期删除超过21天未被访问的文件和目录。当我

我们用竹词。有多个本地代理和跨多个计划的并行构建。竹之家中的builddir有数百千兆字节,分析表明,随着新功能分支的添加,它会不断增长。计划似乎在每个本地代理目录中重复,也直接在build dir中重复

与即将过期的文物不同,竹子似乎无法自行清理。例如,如果删除了一个本地代理,那么本地代理构建目录将永远占据大量空间

可以设置计划在构建结束时进行清理,但是如果需要对构建进行事后检查,这会影响问题分析

由于目录空间不足,我刚刚添加了一个每日cron任务,定期删除超过21天未被访问的文件和目录。当我第一次手动运行时,我从600GB分区回收了300GB。我想知道其他人是否遇到过同样的问题,以及从长远来看,外部清理build dir是否安全。它会影响竹子的生长吗?是否有一些竹子的选择,我错过了,这将为我做到这一点


在Atlassian网站上搜索没有任何帮助,也没有得到任何答案。。。其他人在做什么来驯服这个空间霸王?

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
#清理工作目录中的旧文件
0 20***查找//bamboo home/xml data/build dir/-depth-not-path*repositories cache*-atime+15-delete
#每个星期天清理旧备份
0 21**0查找//竹子主页/备份-类型f-mtime+28-删除
#15天后从安装目录中删除所有旧日志
0 22***查找//bambol/logs/-type f-mtime+15-delete
#快速而肮脏地截断catalina.out以阻止其变得过大(或者最好还是使用logrotate)
0 23***cat/dev/null>//bambol/logs/catalina.out
我希望这对其他试图控制Bambol磁盘空间使用的人有用。 第一项工作是重要的,最后三项只是家务活


注意:由于我公司外包的linux环境中的特殊情况,catalina.out上不使用logrotate。如果可能的话,我通常会建议使用logrotate,而不是我的快速而肮脏的截断方法-请参阅Jon V.的答案。

而cron的想法效果很好-我在过去使用Bambol时也做过的事情是“每次构建后清理工作目录”选项。基本上,对于任何给定的作业,都有一个配置选项,可以为给定的计划/作业清理相应的
build dir/
目录:

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

虽然这可以确保将来的构建暂存区域得到清理,但对于已经存在和/或旧的构建没有帮助。考虑到正常的git风格的工作流,其中有很多分支(每个分支都为它创建一个特定的作业ID(比如
PLAN-job\u WITH\u branch\u NUMBER-BUILD\u NUMBER
或类似),它很快就会变老/变大。我只是做了一个快速检查,现在我们正在清理大多数构建的构建区域(至少是大的),但我们从loooong之前合并的分支机构中获得了超过100Gig的构建成本

不过,感谢cron示例,这在将来应该可以正常工作

无关:我用竹子越多,我就越喜欢/讨厌它

编辑:作为一般评论,我会非常努力地与SA合作,为
catalina.out
设置/实现日志旋转规则-使用
/dev/null
覆盖看起来是个非常糟糕的主意,除非你已经用ELK或Splunk之类的东西将其覆盖

我的
/etc/logrotate.d/bambon\u catalina\u out
看起来像(使用您的路径):

//bambol/logs/catalina.out{
创建0660竹子
压缩
复制截断
米森戈克
轮换10次
100米
}

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

我有类似的设置,我删除了所有超过一个月的工件,这释放了大量的空间。我写了一个脚本,每个月底运行。我认为没有人使用超过一周的数据。我不太担心关于工件,它们确实占用了很多空间,但是竹子会根据计划配置和它们是否在过去3次部署到任何环境中自行清理它们。我的问题更多的是竹子home/xml data/build dir树中消耗的空间。是的,我同意。这里的外包安排使根管理员需要ests花费$ive,因此我快速而肮脏地截断。竹子中的“构建后清理工作目录”选项在某种程度上有助于清理,但如果作业失败,它也会使疑难解答/事后检查变得更加困难。因此,我不检查它,而“强制执行清理构建”在源代码签出时。这会在后续作业开始之前清理目录。稍后,cron会选择所有旧的合并功能分支并清理它们。是的-这并不理想-此外,您仍然会得到大量从未清理过的目录(我们的一些构建已经为它们创建了900多个分支-假设该构建有4个运行的作业,那么对于陈旧的构建,这是3600多个目录)。如果它有一个“仅当构建成功时才进行清理”,并且有一个复选框“此分支已在源中删除,因此请删除与之关联的所有构建目录”,我认为这将是一个很好的解决方案。这会处理
xml数据/build dir/
好的,但是它旁边的
builds/
目录呢?我刚刚发现,我们的目录中有78Gb的数据——除了
build dir/
中的118Gb之外。他们可以吗
/<path_to>/bamboo/logs/catalina.out {
  create 0660 bamboo bamboo
  compress
  copytruncate
  missingok
  rotate 10
  size 100M
}