ruby – 自动运行部署的Capistrano配方:仅在需要时清理
我们每天使用capistrano(实际上是
webistrano)进行20多次部署,我们遇到的问题是服务器上的磁盘空间充满了旧的部署文件夹.
我不时地运行deploy:cleanup任务来清除所有部署(它保留最后一个:keep_releases,当前设置为30).我想自动清理. 一种解决方案是将以下内容添加到配方中,以便在每次部署后自动运行清理: after "deploy","deploy:cleanup" 但是,我不希望在每次部署之后执行此操作,我只想将其限制为仅在先前部署的数量达到threashold时,例如70.有谁知道我怎么做到这一点? 思考: > Capistrano是否提供了一个包含先前部署数量的变量? >如果没有,有没有人知道计算它的方法. ie set:num_releases,< what-c??an-I-put-here-to-count-previous-deployments> >有没有办法进行pimp部署:清理所以它使用最小阈值,即退出如果< :max_releases以前的部署(其中:max_releases不同于:keep_releases). 解决方法
是的,releases.length
是的,这是一个私有命名空间的任务,只有在建立了一定数量的版本文件夹时才会触发正常的清理任务: namespace :mystuff do task :mycleanup,:except => { :no_release => true } do thresh = fetch(:cleanup_threshold,70).to_i if releases.length > thresh logger.info "Threshold of #{thresh} releases reached,runing deploy:cleanup." deploy.cleanup end end end 要在部署后自动运行,请将其放在配方的顶部: after "deploy","mystuff:mycleanup" 关于这一点的好处是,在deploy上设置的指令之前和之后:cleanup正常执行.例如,我们需要以下内容: before 'deploy:cleanup','mystuff:prepare_cleanup_permissions' after 'deploy:cleanup','mystuff:restore_cleanup_permissions' (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |