Обычно при использовании capistrano я удаляю и удаляю старые версии из развернутого приложения. Я понимаю, что вы можете запустить cap deploy:cleanup
, но все еще оставляете 5 выпусков. Это намеченная цель? Есть ли другой способ очистки старых версий до только одного предыдущего развертывания?
Capistrano - очистка старых версий
Ответ 1
Вы можете использовать переменную :keep_releases
, чтобы переопределить значение по умолчанию 5. Проверьте этот вне.
Ответ 2
Вы можете сделать это автоматически, установив это в свой deploy.rb
set :keep_releases, 1
after "deploy:update", "deploy:cleanup"
В прошлом (я точно не знаю, какая версия) этот обратный вызов был по умолчанию, но позже разработчик решил оставить его пользователю, чтобы решить. В capistrano 3 он был добавлен обратно к потоку развертывания по умолчанию.
Ответ 3
Если вы хотите удалить все релизы, за исключением последних 3, например, вы можете запустить:
cap deploy:cleanup -s keep_releases=3
Ответ 4
У меня была аналогичная проблема. Я хотел сохранить 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