Capistrano – 清理旧版本

通常在使用capistrano时,我会去从已部署的应用程序手动删除旧版本。 我知道你可以运行cap deploy:cleanup但是仍然会留下5个版本。 这是它的目的? 有没有另外一种方式来清理旧版本只有一个以前的部署?

你可以使用:keep_releasesvariables来覆盖默认值5.检查一下。

你可以通过在你的deploy.rb中设置这个来自动完成

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

在过去(我不知道究竟是哪个版本)这个callback是默认的,但是后来开发者决定把它留给用户来决定。 在capistrano 3中,它被添加回默认的部署stream程。

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

 cap deploy:cleanup -s keep_releases=3 

我有一个类似的问题。 我想保留5个版本的正常部署,但需要在某些情况下能够删除所有以前的版本。

我能够做到这一点与自定义的任务。 创build一个文件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