Capistrano 清理旧版本

通常在使用 capistrano 时,我会从已部署的应用程序中手动删除旧版本。我知道您可以运行 cap deploy:cleanup,但是还剩下5个版本。这是它的目的吗?是否有其他方法可以将旧版本清除到只有1个以前的部署?

43857 次浏览

可以使用 :keep_releases变量覆盖默认值5。

您可以通过在 loy.rb 中设置这一点来自动完成这项工作

set :keep_releases, 1
after "deploy:update", "deploy:cleanup"

在过去(我不知道具体是哪个版本) ,这个回调是默认的,但是后来开发人员决定让用户来决定。在 capistrano 3中,它被添加回缺省部署流。

如果您想删除除最后3个版本之外的所有版本,例如,您可以运行:

cap deploy:cleanup -s keep_releases=3

我也有过类似的问题。我想保留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_allcap staging cleanup_all运行