125 通常,在使用capistrano时,我会去手动从已部署的应用程序中删除旧版本。我了解您可以运行,cap deploy:cleanup但仍然有5个版本。这是预期的目的吗?还有另一种方法可以将旧版本清除到仅1个以前的部署中吗? capistrano — 乔希 source 保留一些以前的版本是一个好主意,然后,如果您上次部署包含一个大错误,则可以使用capistrano(cap deploy:rollback)快速回滚到以前的版本,直到修复它为止。 — damoiser
155 您可以使用:keep_releases变量来覆盖默认的5。检查这出。 — jcrossley3 source 2 可能值得注意的是,即使find + rm命令无法删除某些文件,通过after挂钩调用该任务时,该任务似乎也默默地“成功” 。调用它会直接显示错误...当我开始用尽磁盘空间时,我意识到了这一点。 — 康妮 8 @Josh您接受了此答案,但是您应该按照下面的说明检查是否已为“ deploy:cleanup”设置了回调,因为默认情况下该回调未运行。 — 迭戈·普伦茨
131 您可以通过在deploy.rb中进行设置来自动执行此操作 set :keep_releases, 1 after "deploy:update", "deploy:cleanup" 在过去(我不知道确切的版本),此回调是默认的,但是后来开发人员决定将其留给用户决定。在capistrano 3中,它已添加回默认的部署流程中。 — 迭戈·普伦茨 source 1 谢谢迭戈。您的答案在Capistrano v2.14.1中可以正常工作。 — scarver2 1 看起来Capistrano 3调用deploy:cleanup是部署流程的一部分。 — 丹尼斯
41 例如,如果要删除除最后三个版本以外的所有版本,可以运行: cap deploy:cleanup -s keep_releases=3 — 蔡esse source 7 不起作用 optionParser::InvalidOption: invalid option: s — 雪人
0 我有一个类似的问题。我想保留5个版本用于常规部署,但在某些情况下需要能够删除所有以前的版本。 我能够通过自定义任务来执行此操作。创建一个文件lib/capistrano/tasks/cleanup.rake并添加以下代码。 desc "Remove all but the last release" task :cleanup_all do set :keep_releases, 1 invoke "deploy:cleanup" end 运行bundle exec cap staging cleanup_all或cap staging cleanup_all — 抓斗 source