通常在使用capistrano时,我会从已部署的应用程序中手动删除旧版本。我知道您可以运行cap deploy:cleanup
,但仍然会有5个版本。这是它的目的吗?是否有另一种方法可以将旧版本清理为之前的1个部署?
答案 0 :(得分:153)
您可以使用:keep_releases
变量覆盖默认值5.检查this。
答案 1 :(得分:130)
您可以通过在deploy.rb
中设置此项来自动执行此操作set :keep_releases, 1
after "deploy:update", "deploy:cleanup"
过去(我不确切知道哪个版本)这个回调是默认的,但后来开发人员决定将其留给用户来决定。在capistrano 3中,它被添加回默认部署流程。
答案 2 :(得分:41)
如果要删除除最后3个之外的所有版本,例如,您可以运行:
cap deploy:cleanup -s keep_releases=3
答案 3 :(得分: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